题目:
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?
题目分析:很简单。中序遍历二叉树。虽然题目说不要递归,还是用递归做了。不递归的话,可以用栈来做。因为简单题目,不多花时间了。
思路:
略。
注意点:
刚开始使用了一个static型,记录result。在LeetCode上会出现错误结果,但相同输入在eclipse上完全正确。好几次都是这样,貌似static在LeetCode上容易出问题。原因不明。(该代码贴在代码2处)
代码1:
/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> result;
if (root == null){
result = new ArrayList<Integer>();
return result;//return an empty List
}
//combine the inorderTraversal of left subtree, the root, and the right subtree
result = inorderTraversal(root.left);
result.add(root.val);
result.addAll(inorderTraversal(root.right));
return result;
}
}
代码2:
/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
static List<Integer> result = new ArrayList<Integer>();
public List<Integer> inorderTraversal(TreeNode root) {
if (root == null){
return result;
}
inorderTraversal(root.left);
result.add(root.val);
inorderTraversal(root.right);
return result;
}
}