给定一个二叉树,返回它的 前序 遍历。
示例:
输入: [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 }