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

旧时模样 提交于 2019-12-01 09:55:54

问题:

后序遍历二叉树

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

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;
}
}

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!