题目
Given a binary tree, return the preorder traversal of its nodes' values.
二叉树前序遍历。
1 基础的基础。递归和迭代写法都要回。
2 递归的时候,不要忘记函数内是两个参数。(不要和伪代码部分搞混)。
public class Solution {
public ArrayList<Integer> preorderTraversal(TreeNode root) {
ArrayList<Integer> ans = new ArrayList<Integer>();
useme(root,ans);
return ans;
}
public void useme(TreeNode root , ArrayList<Integer> ans){
if(root ==null){
return ;
}
ans.add(root.val);
useme(root.left,ans);
useme(root.right,ans);
}
}
3 迭代的时候,使用stack。 java中 LinkedList 含有queue 和stack共同部分,所以以后都用 LinkedList 来使用。当做stack使用时,方法是push pop
4 前序的迭代相对简单。只需要stack之后,右边的先入栈即可。
public class Solution {
public ArrayList<Integer> preorderTraversal(TreeNode root) {
ArrayList<Integer> ans = new ArrayList<Integer>();
if(root==null){
return ans;
}
LinkedList<TreeNode> stack = new LinkedList<TreeNode>();
stack.push(root);
while(!stack.isEmpty()){
TreeNode temp = stack.pop();
ans.add(temp.val);
if(temp.right!=null){
stack.push(temp.right);
}
if(temp.left!=null){
stack.push(temp.left);
}
}
return ans;
}
}