题目:
Given a binary tree, return the preorder traversal of its nodes' values.
For example:
Given binary tree [1,null,2,3]
,
1 \ 2 / 3
return [1,2,3]
.
思路:
1,递归先序遍历,注意需要在方法前定义一个变量,用于方法内!
2.利用栈(后进先出),先序遍历顺序为,根节点-->左子书 --->右子树,因此,进栈顺序为根-->右--->左;循环条件为栈是否为空。
程序:
1.class Solution {
private List<Integer> reslut = new ArrayList<>();//方法前变量
public List<Integer> preorderTraversal(TreeNode root){
if(root!=null){
reslut.add(root.val);
preorderTraversal(root.left);
preorderTraversal(root.right);
}
return reslut;
}
}
2.class Solution {
public List<Integer> preorderTraversal(TreeNode root){
List <Integer> list = new ArrayList<Integer>();
Stack <TreeNode> stack = new Stack <TreeNode>();
if(root == null)
return list;
stack.push(root);
while (!stack.isEmpty()){
TreeNode pop = stack.pop();
list.add(pop.val);
if(pop.right != null){
stack.push(pop.right);
}
if(pop.left != null){
stack.push(pop.left);
}
}
return list;
}
}