博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Binary Tree Postorder Traversal
阅读量:5119 次
发布时间:2019-06-13

本文共 1663 字,大约阅读时间需要 5 分钟。

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
postorderTraversal(TreeNode root) {19 List
path = new ArrayList
();20 Deque
stack = new ArrayDeque
();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 == 235 stack.pop();36 path.add(m.node.val);37 }38 }39 }40 return path;41 }42 }

 

转载于:https://www.cnblogs.com/ireneyanglan/p/4850619.html

你可能感兴趣的文章
jquery中ajax返回值无法传递到上层函数
查看>>
css3之transform-origin
查看>>
Master选举原理
查看>>
[ JAVA编程 ] double类型计算精度丢失问题及解决方法
查看>>
小别离
查看>>
好玩的-记最近玩的几个经典ipad ios游戏
查看>>
PyQt5--EventSender
查看>>
Sql Server 中由数字转换为指定长度的字符串
查看>>
Java 多态 虚方法
查看>>
万能的SQLHelper帮助类
查看>>
tmux的简单快捷键
查看>>
[Swift]LeetCode922.按奇偶排序数组 II | Sort Array By Parity II
查看>>
《绿色·精简·性感·迷你版》易语言,小到不可想象
查看>>
Android打包key密码丢失找回
查看>>
VC6.0调试技巧(一)(转)
查看>>
类库与框架,强类型与弱类型的闲聊
查看>>
webView添加头视图
查看>>
php match_model的简单使用
查看>>
在NT中直接访问物理内存
查看>>
Intel HEX 文件格式
查看>>