给定一个二叉树,返回它的 前序 遍历。
示例:
输入: [1,null,2,3]
1
\
2
/
3
输出: [1,2,3]
1 //迭代算法 2 class Solution { 3 public List<Integer> preorderTraversal(TreeNode root) { 4 Stack<TreeNode> stack = new Stack<TreeNode>(); 5 List<Integer> list = new ArrayList<Integer>(); 6 if(root==null)return list; 7 stack.push(root); 8 while(!stack.empty()){ 9 TreeNode tmpnode = stack.pop(); 10 list.add(tmpnode.val); 11 if(tmpnode.right!=null)stack.push(tmpnode.right); 12 if(tmpnode.left!=null)stack.push(tmpnode.left); 13 } 14 return list; 15 } 16 } 17 18 //递归算法 19 class Solution { 20 public List<Integer> preorderTraversal(TreeNode root) { 21 List<Integer> list = new ArrayList<Integer>(); 22 if(root==null) return list; 23 preorder(root,list); 24 return list; 25 } 26 public void preorder(TreeNode node,List<Integer> list){ 27 list.add(node.val); 28 if(node.left!=null)preorder(node.left,list); 29 if(node.right!=null)preorder(node.right,list); 30 } 31 }