**LeetCode-145二叉树后序遍历

问题:

后序遍历二叉树

分析:非递归后序遍历二叉树。直接后序遍历的话会很麻烦,所以我们要想一些精妙的方法,将后序遍历改成先序遍历并满足以下两个条件即可。

1.使用链表头插法来进行先序遍历。

2.先遍历右子树再遍历左子树即可(借助栈实现,先将左节点压栈,再将右节点压栈)。

代码:

/**
* 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) {
LinkedList<Integer> output = new LinkedList();
if(root==null){
return output;
}
Stack s = new Stack();
TreeNode node;
s.push(root);
while(!s.empty()){            //注意记忆循环条件
node = (TreeNode)s.pop();
output.addFirst(node.val);
if(node.left!=null){
s.push(node.left);
}
if(node.right!=null){
s.push(node.right);
}
}
return output;
}
}

posted @ 2019-10-15 13:33  高鸣泽  阅读(112)  评论(0)    收藏  举报