LeetCode Java刷题笔记—145. 二叉树的后序遍历
Posted 刘Java
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode Java刷题笔记—145. 二叉树的后序遍历相关的知识,希望对你有一定的参考价值。
给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 。
简单难度。先后序遍历左子树,再后序遍历右子树,再访问根节点。
最简单的就是使用递归的方式。
public List<Integer> postorderTraversal( TreeNode root )
List<Integer> result = new ArrayList<>();
postorder( root, result );
return result;
private void postorder( TreeNode node, List<Integer> result )
if( node == null )
return;
postorder( node.left, result );
postorder( node.right, result );
result.add( node.val );
另一种非递归的方式,这种方式最好也要掌握。因为一般出到这种简单题的时候,可能会让你用非递归的方法写。
整体看起来和前序遍历的代码差不多,但是这里我们返回的List是LinkedList,巧妙的借助栈结构进行结果的反转。
public List<Integer> postorderTraversal( TreeNode root )
//存储最终数据
LinkedList<Integer> result = new LinkedList<>();
if( root == null )
return result;
//使用LinkedList模拟栈结构
LinkedList<TreeNode> nodes = new LinkedList<>();
nodes.add( root );
while( !nodes.isEmpty() )
root = nodes.removeFirst();
//让结果倒序存储
result.addFirst( root.val );
if( root.left != null )
nodes.addFirst( root.left );
if( root.right != null )
nodes.addFirst( root.right );
return result;
以上是关于LeetCode Java刷题笔记—145. 二叉树的后序遍历的主要内容,如果未能解决你的问题,请参考以下文章
Leetcode刷题100天—145. 二叉树的后序遍历(二叉树)—day08