您的位置:首页 > 编程语言 > Go语言

Binary Tree Preorder Traversal

2014-01-27 08:09 507 查看
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?

public class BinaryTreePreorderTraversal {
public ArrayList<Integer> preorderTraversal(TreeNode<Integer> root) {
ArrayList<Integer> r = new ArrayList<Integer>();
if (root == null) {
return r;
}
r.add(root.data);
ArrayList<Integer> left = preorderTraversal(root.left);
ArrayList<Integer> right = preorderTraversal(root.right);
if (left != null)
r.addAll(left);
if (right != null)
r.addAll(right);
return r;
}
}

或者:
public static ArrayList<Integer> preorderTraversal(TreeNode root){
ArrayList<Integer> list = new ArrayList<>();
preorderTraversalHelper(root,list);
return list;
}
private static void preorderTraversalHelper(TreeNode root, ArrayList<Integer> list){
if(root == null) return;
list.add(root.val);
preorderTraversalHelper(root.left, list);
preorderTraversalHelper(root.right,list);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode algorithm