zoukankan      html  css  js  c++  java
  • Leetcode 145. 二叉树的后序遍历

    题目链接

    https://leetcode-cn.com/problems/binary-tree-postorder-traversal/description/

    题目描述

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

    示例:

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

    进阶: 递归算法很简单,你可以通过迭代算法完成吗?

    题解

    后序遍历,使用一个堆栈来存储数据,当一个节点的子节点已经遍历过了或者该节点是叶子节点时,就把该节点添加进列表里。

    代码

    /**
     * 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> list = new ArrayList<>();
            if (root == null) { return list; }
            Stack<TreeNode> stack = new Stack<>();
            TreeNode pre = null;
            stack.push(root);
            while (!stack.isEmpty()) {
                TreeNode node = stack.peek();
                if ((node.left == null && node.right == null) 
                    || (pre != null && (pre == node.left || pre == node.right))) {
                    list.add(node.val);
                    pre = node;
                    stack.pop();
                } else {
                    if (node.right != null) {
                        stack.push(node.right);
                    }
                    if (node.left != null) {
                        stack.push(node.left);
                    }
                }
            }
            return list;
        }
    }
    
  • 相关阅读:
    LSTM
    Realsense D435i
    ubuntu18 realsenseD435i
    net
    test
    LSTM Accuracy
    boost x64 lib
    E0443类模板 "std::unordered_set" 的参数太多
    PropertySheet
    freetype 编译
  • 原文地址:https://www.cnblogs.com/xiagnming/p/9542011.html
Copyright © 2011-2022 走看看