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

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

Binary Tree Postorder Traversal

Given a binary tree, return the postorder traversal of its nodes' values.

For example:
Given binary tree {1,#,2,3},
   1
    \
     2
    /
   3
return [3,2,1].
Note: Recursive solution is trivial, could you do it iteratively?
Show Tags
Have you met this question in a real interview? Yes  No
Discuss

SOLUTION 1:

递归解法

1 public List
postorderTraversal1(TreeNode root) { 2 List
ret = new ArrayList
(); 3 dfs(root, ret); 4 return ret; 5 } 6 7 // Solution 1: rec 8 public void dfs(TreeNode root, List
ret) { 9 if (root == null) {10 return;11 }12 13 dfs(root.left, ret);14 dfs(root.right, ret);15 ret.add(root.val);16 }
View Code

 

SOLUTION 2:

/**

     *  后序遍历迭代解法
     *  http://www.youtube.com/watch?v=hv-mJUs5mvU
     *  http://blog.csdn.net/tang_jin2015/article/details/8545457
     *  从左到右的后序 与从右到左的前序的逆序是一样的,所以就简单喽! 哈哈
     *  用另外一个栈进行翻转即可喽
     */

1 // Solution 2: iterator 2     public List
postorderTraversal(TreeNode root) { 3 List
ret = new ArrayList
(); 4 if (root == null) { 5 return ret; 6 } 7 8 Stack
s = new Stack
(); 9 Stack
out = new Stack
();10 11 s.push(root);12 13 while (!s.isEmpty()) {14 TreeNode cur = s.pop();15 out.push(cur.val);16 17 if (cur.left != null) {18 s.push(cur.left);19 }20 21 if (cur.right != null) {22 s.push(cur.right);23 }24 }25 26 while (!out.isEmpty()) {27 ret.add(out.pop());28 }29 30 return ret;31 }
View Code

 

GITHUB:

你可能感兴趣的文章
SQLI LABS Stacked Part(38-53) WriteUp
查看>>
oracle异常
查看>>
from django.contrib.auth.models import AbstractUser 的继承
查看>>
java基础——java基本数据类型
查看>>
十天冲刺开发第五天个人工作总结
查看>>
jQuery选择器
查看>>
Hibernate4.3 并发控制
查看>>
Oracle Minus 取差集
查看>>
C# 该行已经属于另一个表 的解决方法
查看>>
malloc分配内存
查看>>
透明度的写法
查看>>
了解测试系统的架构
查看>>
asp.net服务器控件弹出确认窗口
查看>>
[Android]mac下开发环境搭建
查看>>
PL/SQL Developer 8注册码
查看>>
Java核心技术读书笔记02
查看>>
js alert(“”)弹框 自定义样式
查看>>
GCC和G++详解
查看>>
用dblink执行DDL
查看>>
Android视图状态及重绘流程分析,带你一步步深入了解View(三)
查看>>