Binary Tree Preorder Traversal leetcode java
题目:
Given a binary tree, return the preorder traversal of its nodes‘ values.
For example:
Given binary tree {1,#,2,3}
,
1 2 / 3
return [1,2,3]
.
Note: Recursive solution is trivial, could you do it iteratively?
题解:
递归做法如下:
2 if(root==null)
3 return;
4 re.add(root.val);
5 helper(root.left,re);
6 helper(root.right,re);
7 }
8 public ArrayList<Integer> preorderTraversal(TreeNode root) {
9 ArrayList<Integer> re = new ArrayList<Integer>();
10 if(root==null)
11 return re;
12 helper(root,re);
13 return re;
14 }
非递归方法:
2 ArrayList<Integer> res = new ArrayList<Integer>();
3 if(root == null)
4 return res;
5 LinkedList<TreeNode> stack = new LinkedList<TreeNode>();
6 while(root!=null || !stack.isEmpty()){
7 if(root!=null){
8 stack.push(root);
9 res.add(root.val);
10 root = root.left;
11 }
12 else{
13 root = stack.pop();
14 root = root.right;
15 }
16 }
17 return res;
18 }
Binary Tree Preorder Traversal leetcode java,古老的榕树,5-wow.com
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。