二叉树的先序遍历,将每个节点中值保存在集合中,并返回,递归和递归两种方法:
方法一:利用二叉树的先序遍历,代码如下:
public class Solution {
public List<Integer> preorderTraversal(TreeNode root) {
List<Integer> ls=new ArrayList();
vist(root,ls);
return ls;
}
public void vist(TreeNode root,List<Integer> ls){
if(root==null) return;
ls.add(root.val);
vist(root.left,ls);
vist(root.right,ls);
}
}
方法二:非递归调用时,利用了Java中的栈集合,比较简单,代码如下:
public class Solution {
public List<Integer> preorderTraversal(TreeNode root) {
List<Integer> ls=new ArrayList();
Stack<TreeNode> stack=new Stack();
if(root==null)return ls;
stack.push(root);
while(!stack.empty()){
TreeNode n=stack.pop();
ls.add(n.val);
if(n.right!=null){
stack.push(n.right);
}
if(n.left!=null){
stack.push(n.left);
}
}
return ls;
}