方法一:递归方式
class Solution { public List<Integer> preorderTraversal(TreeNode root) { List<Integer> result=new ArrayList<Integer>(); if(root==null){ return result; } List<Integer> left=preorderTraversal(root.left); List<Integer> right=preorderTraversal(root.right); result.add(root.val); result.addAll(left); result.addAll(right); return result; } }
方法二:使用栈的迭代方式
class Solution { public List<Integer> preorderTraversal(TreeNode root) { List<Integer> arraylist=new ArrayList<Integer>(); if(root==null){ return arraylist; } Stack<TreeNode> stack=new Stack<TreeNode>(); stack.push(root); while(!stack.isEmpty()){ TreeNode node=stack.pop(); arraylist.add(node.val); if(node.right!=null){ stack.push(node.right); } if(node.left!=null){ stack.push(node.left); } } return arraylist; } }