题目:
Given a binary tree, return the preorder traversal of its nodes' values.
For example:
Given binary tree {1,#,2,3}
,
1 \ 2 / 3
return [1,2,3]
.
先序遍历二叉树 和我前面一篇中序遍历的思路差不多,就直接给代码吧
递归:
public static List<Integer> reslut=new ArrayList<>();
public static List<Integer> preorderTraversal(TreeNode root) {
if(root!=null)
{
reslut.add(root.val);
preorderTraversal(root.left);
preorderTraversal(root.right);
}
return reslut;
}
迭代:
public static List<Integer> preorderTraversal2(TreeNode root) {
List<Integer> res=new ArrayList<>();
Stack<TreeNode> nodeStack=new Stack<>();
while(true)
{
while(root!=null)
{
res.add(root.val);
nodeStack.push(root);
root=root.left;
}
if(nodeStack.isEmpty()) break;
TreeNode tempNode=nodeStack.pop();
root=tempNode.right;
}
return res;
}