zoukankan      html  css  js  c++  java
  • Binary Tree Postorder Traversal

    Postorder: first, visit left child, then, parent, last, is to visit right child.

    The postorder traversal result of above tree is {4,6,5,2,3,1}.

    Key different here is that we print right child before we print parent node. Therefore, we need a mark for parent node. Only when its left child and right child are both printed, it can be printed out.

     1 /**
     2  * Definition for a binary tree node.
     3  * public class TreeNode {
     4  *     int val;
     5  *     TreeNode left;
     6  *     TreeNode right;
     7  *     TreeNode(int x) { val = x; }
     8  * }
     9  */
    10 
    11 class MarkTreeNode {
    12     TreeNode node;
    13     int mark;
    14     MarkTreeNode(TreeNode n, int x) { node = n; mark = x; }
    15 } 
    16 
    17 public class Solution {
    18     public List<Integer> postorderTraversal(TreeNode root) {
    19         List<Integer> path = new ArrayList<Integer>();
    20         Deque<MarkTreeNode> stack = new ArrayDeque<MarkTreeNode>();
    21         TreeNode p = root;
    22         MarkTreeNode m = null;
    23         while (p != null || !stack.isEmpty()) {
    24             while (p != null) {
    25                 m = new MarkTreeNode(p, 1);
    26                 stack.push(m);
    27                 p = p.left;
    28             }
    29             if (!stack.isEmpty()) {
    30                 m = stack.peek();
    31                 if (m.mark == 1) {
    32                     p = m.node.right;
    33                     m.mark = 2;
    34                 } else { // m.mark == 2
    35                     stack.pop();
    36                     path.add(m.node.val);
    37                 }
    38             }
    39         }
    40         return path;
    41     }
    42 }
  • 相关阅读:
    2019.6.30 Spring注解 bean后置处理器和属性赋值
    2019.6.29 Spring注解-Bean的注册
    2019.6.28 Spring注解
    boost基础环境搭建
    动态规划入门一:钢条切割问题
    《剑指offer》读书笔记
    字符串的全排列
    西山居递归面试题
    常见的数据结构
    832. Flipping an Image
  • 原文地址:https://www.cnblogs.com/ireneyanglan/p/4850619.html
Copyright © 2011-2022 走看看