二叉树的层序遍历 【leetcode - 107 - 简单】

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Tomwildboar/article/details/86240643

文章优先发表在个人博客 http://www.xdx97.com/#/single?bid=4c1f05d6-7e8f-a04e-e03f-c98afb2cdf30

   胡扯:真好,我上一个题是用 Arraylist集合 来完成的。对于这个题来说,那就是很简单了每次添加到开头,就相当于反过来了。 至于 二叉,还是多叉,无所谓了。

思路:

    1、参考上一个多叉树的 层序遍历。N叉树的层序遍历

    2、只需要在把每一层的数据 添加到集合的时候。变成  list.add(0,aa); 就好了,这样就成了反序的了。

代码:

List<List<Integer>> arr = new ArrayList<>();
    void bfs (List<TreeNode> root){

        List<Integer> aa = new ArrayList<>();
        for (TreeNode r : root)
            aa.add(r.val);
        arr.add(0,aa);
        List<TreeNode> crr = new ArrayList<>();
        for (TreeNode r : root){
            if (r.left != null)
                crr.add(r.left);
            if (r.right != null)
                crr.add(r.right);
        }
        if (crr.size() > 0)
            bfs(crr);
    }

    public List<List<Integer>> levelOrderBottom(TreeNode root) {

        if (root == null)
            return arr;
        List<TreeNode> a =  new ArrayList<>();
        a.add(root);
        bfs( a );
        return arr;
    }

猜你喜欢

转载自blog.csdn.net/Tomwildboar/article/details/86240643