leetcode 144. 二叉树的前序遍历

给定一个二叉树,返回它的 前序 遍历。

 示例:

输入: [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 }

 

posted on 2019-12-04 20:51  forever_time  阅读(205)  评论(0编辑  收藏  举报