Binary Tree Inorder Traversal
Description
Given a binary tree, return the inorder traversal of its nodes‘ values.
/**
* Definition of TreeNode:
* public class TreeNode {
* public int val;
* public TreeNode left, right;
* public TreeNode(int val) {
* this.val = val;
* this.left = this.right = null;
* }
* }
*/
public class Solution {
/**
* @param root: A Tree
* @return: Inorder in ArrayList which contains node values.
*/
public List<Integer> inorderTraversal(TreeNode root) {
// write your code here
ArrayList<Integer> results = new ArrayList<Integer>();
if (root == null){
return results ;
}
List<Integer> left = inorderTraversal(root.left);
List<Integer> right = inorderTraversal(root.right);
results.addAll(left);
results.add(root.val);
results.addAll(right);
return results ;
}
}
法2:非递归
/**
* Definition of TreeNode:
* public class TreeNode {
* public int val;
* public TreeNode left, right;
* public TreeNode(int val) {
* this.val = val;
* this.left = this.right = null;
* }
* }
*/
public class Solution {
/**
* @param root: A Tree
* @return: Inorder in ArrayList which contains node values.
*/
public List<Integer> inorderTraversal(TreeNode root) {
// write your code here
/* ArrayList<Integer> results = new ArrayList<Integer>();
if (root == null){
return results ;
}
List<Integer> left = inorderTraversal(root.left);
List<Integer> right = inorderTraversal(root.right);
results.addAll(left);
results.add(root.val);
results.addAll(right);
return results ;*/
Stack<TreeNode> stack = new Stack<TreeNode>();
ArrayList<Integer> results = new ArrayList<Integer>();
if(root == null){
return results ;
}
TreeNode curt = root ;
while(curt != null || ! stack.isEmpty()){
while(curt != null){
stack.push(curt);
curt = curt.left ;
}
curt = stack.pop();
results.add(curt.val);
curt = curt.right;
}
return results ;
}
}
272

被折叠的 条评论
为什么被折叠?



