0
点赞
收藏
分享

微信扫一扫

(每日一练java)二叉树的后序遍历

老罗话编程 2022-02-15 阅读 51

二叉树的后序遍历

给定一个二叉树,返回它的 后序 遍历。

示例:

输入: [1,null,2,3]  
1
\
2
/
3

输出: [3,2,1]

public class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;
    TreeNode(int x) {
        val = x;
    }
}
class Solution {
    public List<Integer> postorderTraversal(TreeNode root) {
        List<Integer> list = new ArrayList<>();
        Stack<TreeNode> nodeStack = new Stack<>();
        TreeNode nodeTemp = root;
        TreeNode preNode = null;
        while (nodeTemp != null || !nodeStack.isEmpty()) {
            while (nodeTemp != null) {
                nodeStack.push(nodeTemp);
                nodeTemp = nodeTemp.left;
            }
            nodeTemp = nodeStack.peek();
            if (nodeTemp.right == null || nodeTemp.right == preNode) {
                nodeTemp = nodeStack.pop();
                list.add(nodeTemp.val);
                preNode = nodeTemp;
                nodeTemp = null;
            } else {
                nodeTemp = nodeTemp.right;
            }
        }
        return list;
    }
}
举报

相关推荐

0 条评论