145. 二叉树的后序遍历

思路:
先序遍历:根-左,右
中序遍历:左,根,右
后序遍历:左-右-根
可以发现,只是访问根节点顺序不同而已‘
后序遍历,左右根,也就是根右左然后逆序!!!(先序遍历是根左右,则后续遍历时候入栈时先入左边再右边)最后的结果逆序输出一下就行!
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {//后序遍历,左右根,也就是根右左然后逆序!!!(先序遍历是跟左右,则后续遍历时候入栈时先入左边再右边)最后的结果逆序输出一下就行!
public List<Integer> postorderTraversal(TreeNode root) {
List<Integer>res=new ArrayList<Integer>();
if(root==null)return res;
Stack<TreeNode> stack=new Stack<TreeNode>();
stack.push(root);
while(!stack.isEmpty())
{
TreeNode n=stack.pop();
res.add(n.val);
if(n.left!=null)
{
stack.push(n.left);
}
if(n.right!=null)
{
stack.push(n.right);
}
}
Collections.reverse(res);
return res;
}
}

浙公网安备 33010602011771号