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]
递归:
import java.util.ArrayList;
class Solution {
public List<Integer> preorderTraversal(TreeNode root) {
ArrayList<Integer> ret=new ArrayList<Integer>();
if(root!=null){
ret.add(root.val);
ret.addAll(preorderTraversal(root.left));
ret.addAll(preorderTraversal(root.right));
}
return ret;
}
}
迭代:
import java.util.ArrayList;
import java.util.Stack;
class Solution {
public List<Integer> preorderTraversal(TreeNode root) {
ArrayList<Integer> ret=new ArrayList<>();
if(root==null) return ret;
Stack<TreeNode> s=new Stack<TreeNode>();
while(root!=null||!s.isEmpty()){
while(root!=null){
ret.add(root.val);
s.push(root);
root=root.left;
}
if(!s.isEmpty()){
root=s.pop();
root=root.right;
}
}
return ret;
}
}