您的位置:首页 > 其它

【LeetCode】Binary Tree Preorder Traversal 解题报告

2017-05-20 13:32 639 查看

【LeetCode】Binary Tree Preorder Traversal 解题报告

标签(空格分隔): LeetCode

题目地址:https://leetcode.com/problems/binary-tree-preorder-traversal/#/description

题目描述:

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?

Ways

这个题就是最简单的先序遍历,先用递归的方法做了一遍。很简单。

public class Solution {
List<Integer> ans = new ArrayList<Integer>();
public List<Integer> preorderTraversal(TreeNode root) {
preOrder(root);
return ans;
}
public void preOrder(TreeNode root){
if(root == null){
return;
}
ans.add(root.val);
preOrder(root.left);
preOrder(root.right);
}
}


然后非递归的:用栈,先把右孩子进栈,再左孩子进栈.

public class Solution {
public List<Integer> preorderTraversal(TreeNode root) {
if(root == null){
return new ArrayList<Integer>();
}
List<Integer> ans = new ArrayList<Integer>();
Stack<TreeNode> stack = new Stack<TreeNode>();
stack.push(root);
while(!stack.isEmpty()){
TreeNode temp = stack.pop();
ans.add(temp.val);
if(temp.right != null){
stack.push(temp.right);
}
if(temp.left != null){
stack.push(temp.left);
}
}
return ans;
}
}


Date

2017 年 5 月 20 日
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐