題目:
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;
}
}