欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

二叉树的前序遍历(两种方法)

程序员文章站 2022-05-20 21:31:46
...

1.遍历的思想(根左右)

注意:1.每次都要进行将链表清空;

           2.记录的位置需要放在后面)
 

class Solution {
    List<Integer> list=new ArrayList<>();
    private void preorder(TreeNode root){
        if(root!=null){
        list.add(root.val);
        preorder(root.left);
        preorder(root.right);
        }
    }
    public List<Integer> preorderTraversal(TreeNode root) {
        list.clear();//清空
        preorder(root);
        return list;
    }
}

2.汇总的思想(先逐个遍历左子树,然后遍历右子树,最后在进行汇总)

class Solution {
    public List<Integer> preorderTraversal(TreeNode root) {
        if(root==null)
        {
            return new ArrayList<>();//当root为空时,返回一个空链表
        }
        List<Integer> left=preorderTraversal(root.left);//求出所有左子树节点
        List<Integer> right=preorderTraversal(root.right);//求出右子树结点
        List<Integer> list=new ArrayList<>();
        list.add(root.val);
        list.addAll(left);//将链表节点全部进行尾插到新链表中
        list.addAll(right);
        return list;
    }
}