解法一 迭代
class Solution {
public List<Integer> preorderTraversal(TreeNode root) {
List<Integer> list=new ArrayList();
Stack<TreeNode> stack=new Stack<>();
if(root!=null){
stack.push(root);
}
while(!stack.isEmpty()){
TreeNode node=stack.pop();
list.add(node.val);
if(node.right!=null){
stack.push(node.right);
}
if(node.left!=null){
stack.push(node.left);
}
}
return list;
}
}
解法二:递归
class Solution {
List<Integer> list;
public List<Integer> preorderTraversal(TreeNode root) {
list=new ArrayList();
preorder(root);
return list;
}
public void preorder(TreeNode root){
if(root==null){
return ;
}
list.add(root.val);
preorder(root.left);
preorder(root.right);
}
}