[Leetcode] 94. Binary Tree Inorder Traversal
来源:互联网 发布:压力容器设计 知乎 编辑:程序博客网 时间:2024/05/21 08:39
Given a binary tree, return the inorder traversal of its nodes' values.
For example:
Given binary tree {1,#,2,3}
,
1 \ 2 / 3
return [1,3,2]
.
Note: Recursive solution is trivial, could you do it iteratively?
confused what "{1,#,2,3}"
means? > read more on how binary tree is serialized on OJ.
Recursive
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { public ArrayList<Integer> inorderTraversal(TreeNode root) { ArrayList<Integer> result = new ArrayList<Integer>(); traverse(root, result); return result; } private void traverse(TreeNode root, ArrayList<Integer> result){ if(root == null) return; traverse(root.left, result); result.add(root.val); traverse(root.right, result); }}
iterative
import java.util.ArrayList;import java.util.Stack;public class Solution { public ArrayList<Integer> inorderTraversal(TreeNode root) { ArrayList<Integer> result = new ArrayList<Integer>(); if(root == null) return result; Stack<TreeNode> stack = new Stack<TreeNode>(); while(!stack.isEmpty() || root != null){ if(root != null){ stack.push(root); root = root.left; } else { root = stack.pop(); result.add(root.val); root = root.right; } } return result; }}
preorder
public List<Integer> iterativePreorder(TreeNode root){ List<Integer> res = new LinkedList<Integer>(); if(root==null) return res; Stack<TreeNode> stack = new Stack<TreeNode>(); Stack.push(root); while(!stack.isEmpty()){ TreeNode top = stack.pop(); res.add(top.val); if(root.right!=null) stack.push(top.right); if(root.left!=null) stack.push(top.left); } return res;}
postorder
public List<Integer> iterativePostorder(TreeNode root){ List<Integer> res = new LinkedList<Integer>(); if(root==null) return res; Stack<TreeNode> stack = new Stack<TreeNode>(); TreeNode lastNodeVisited = null; while(!stack.isEmpty()||root!=null){ if(root!=null){ stack.push(root); root = root.left; }else{ TreeNode peekNode = stack.peek(); if(peeknode.right!=null && peeknode.right!=lastNodeVisited){ root = peeknode.right; }else{ stack.pop(); res.add(peeknode.val); lastNodeVisited = peeknode; } } } return res;}
0 0
- LeetCode 94. Binary Tree Inorder Traversal
- [LeetCode]94.Binary Tree Inorder Traversal
- 94. Binary Tree Inorder Traversal Leetcode Python
- [Leetcode] 94. Binary Tree Inorder Traversal
- LeetCode --- 94. Binary Tree Inorder Traversal
- LeetCode 94. Binary Tree Inorder Traversal
- [leetcode] 94.Binary Tree Inorder Traversal
- 94. Binary Tree Inorder Traversal LeetCode
- LeetCode 94. Binary Tree Inorder Traversal
- *LeetCode 94. Binary Tree Inorder Traversal
- [LeetCode]94. Binary Tree Inorder Traversal
- [LeetCode]94. Binary Tree Inorder Traversal
- 【LeetCode】94. Binary Tree Inorder Traversal
- leetcode 94. Binary Tree Inorder Traversal
- leetcode 94. Binary Tree Inorder Traversal
- LeetCode *** 94. Binary Tree Inorder Traversal
- LeetCode-94.Binary Tree Inorder Traversal
- LeetCode 94. Binary Tree Inorder Traversal
- 深入图解字符集与字符集编码(二)——编号 vs 编码(出处:http://my.oschina.net/goldenshaw/blog/305805)
- 不能从const char *转换为LPCWSTR
- Linux笔记(一)-了解Linux
- php中出现Notice: Uninitialized string offset: 0原因及解决办法
- android 电话拨号器
- [Leetcode] 94. Binary Tree Inorder Traversal
- Linux下搭建PHP开发环境(Apache2.4.12+PHP5.6.7+MySQL5.6)
- PAT A 1097. Deduplication on a Linked List (25)
- Android 使用NineOldAndroids实现绚丽的ListView左右滑动删除Item效果
- Win下Linux虚拟机登陆后屏幕没有菜单的解决方法
- 为什么list最好=new arraylist
- 程序员之路
- MMU、Cache、TLB、流水线
- 一个JDK1.5的新特性:枚举学习笔记