递归法:
class Solution {
List<Integer> list = new ArrayList<Integer>();
public List<Integer> preorderTraversal(TreeNode root) {
if(root==null) return list;
list.add(root.val);
if(root.left!=null){
preorderTraversal(root.left);
}
if(root.right!=null){
preorderTraversal(root.right);
}
return list;
}
}
迭代法
class Solution {
public List<Integer> preorderTraversal(TreeNode root) {
List<Integer> list = new ArrayList<Integer>();
Deque<TreeNode> stack = new LinkedList<>();
if(root==null) return list;
while(!stack.isEmpty()||root!=null){
while(root!=null){
list.add(root.val);
stack.push(root);
root=root.left;
}
root=stack.pop();
root=root.right;
}
return list;
}
}