For example:
Given binary tree
{1,#,2,3}
,1 \ 2 / 3return
[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.OJ's Binary Tree Serialization: The serialization of a binary tree follows a level order traversal, where '#' signifies a path terminator where no node exists below.
Here's an example:
1 / \ 2 3 / 4 \ 5The above binary tree is serialized as
"{1,2,3,#,#,4,#,#,5}"
.
/** * 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> in = new ArrayList<Integer>(); Stack<TreeNode> stack = new Stack<TreeNode>(); TreeNode node = root; while (!stack.isEmpty() || node != null) { if (node != null) { stack.push(node); // Left node = node.left; } else { node = stack.pop(); // Center in.add(node.val); // Right node = node.right; } } return in; } }
No comments:
Post a Comment