leetcode 144. 二叉树的前序遍历

岁酱吖の 提交于 2019-12-06 12:55:19

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

 示例:

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

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!