题目
Given a binary tree, return the preorder traversal of its nodes' values.
前序遍历,递归,迭代两种方式
1 遍历题目就是理解后练习,做到和呼吸的感觉一样
2 递归很简单。
3 迭代来说,就是从递归理解栈,并且显示地应用起来
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){
ans.add(root.val);
useme(root.left,ans);
useme(root.right,ans);
}
}
}
2 迭代
public class Solution {
public ArrayList<Integer> preorderTraversal(TreeNode root) {
ArrayList<Integer> ans = new ArrayList<Integer>();
LinkedList<TreeNode> stack = new LinkedList<TreeNode>();
if(root==null){
return ans;
}
stack.push(root);
while(!stack.isEmpty()){
TreeNode cur = stack.pop();
ans.add(cur.val);
if(cur.right!=null){
stack.push(cur.right);
}
if(cur.left!=null){
stack.push(cur.left);
}
}
return ans;
}
}