题目:
Given a binary tree, return the preorder traversal of its nodes' values.
Example:
Input:[1,null,2,3]
1 \ 2 / 3 Output:[1,2,3]
Follow up: Recursive solution is trivial, could you do it iteratively?
代码如下:
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
public class BinaryTreePreorderTraversal
{
public static void main(String[] args)
{
/**
* Example:
* Input: [1,null,2,3]
* 1
* \
* 2
* /
* 3
* Output: [1,2,3]
*/
TreeNode root = new TreeNode(1);
TreeNode treeNode2 = new TreeNode(2);
TreeNode treeNode3 = new TreeNode(3);
root.right = treeNode2;
treeNode2.left = treeNode3;
System.out.println(preorderTraversal(root));
}
public static List<Integer> preorderTraversal(TreeNode root)
{
List<Integer> list = new ArrayList<Integer>();
if (root == null)
{
return list;
}
Stack<TreeNode> stack = new Stack<TreeNode>();
stack.push(root);
while (!stack.isEmpty())
{
root = stack.pop();
list.add(root.val);
if (root.right != null)
{
stack.push(root.right);
}
if (root.left != null)
{
stack.push(root.left);
}
}
return list;
}
}