• LeetCode 107.Binary Tree Level Order Traversal II


    Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from leaf to root).

    For example:
    Given binary tree [3,9,20,null,null,15,7],

        3
       / 
      9  20
        /  
       15   7
    

     

    return its bottom-up level order traversal as:

    [
      [15,7],
      [9,20],
      [3]
    ]

    题意:给定一个二叉树,从叶子结点开始,从左往右,从上往下地返回二叉树中的所有结点。
    思路:层次遍历,
    建立一个queue,先将根节点放进去,用while循环判断queue是否为空,不为空时,建立一个存放结点数值的链表,获取当前queue的结点个数,建立for循环,将当前结点的值val放入新链表中,再判断当前结点的左右子树是否为空,不为空则将子树存入queue。for循环结束后,将存放结点数值的链表存入list的首位。
    代码如下:
    public List<List<Integer>> levelOrderBottom(TreeNode root) {
            List<List<Integer>> list = new LinkedList<List<Integer>>();
            if (root == null)
                return list;
            Queue<TreeNode> subList = new LinkedList<>();
            int size = 0;
            subList.add(root);
            while (!subList.isEmpty()) {
                List<Integer> subListInt = new LinkedList<>();
                size = subList.size();// 判断当前层中结点个数
                for (int i = 0; i < size; i++) {
                    TreeNode t = subList.poll();//获取并移除此队列的头元素
                    subListInt.add(t.val);// 存入当前结点的值val
    
                    if (t.left != null)// 将下一层的结点存入链表中
                        subList.add(t.left);
                    if (t.right != null)
                        subList.add(t.right);
                }
                ((LinkedList<List<Integer>>) list).addFirst(subListInt);
            }
            return list;
        }
     
  • 相关阅读:
    附近地点搜索 ,地图
    网站访问量
    后台全选功能以及数据的提交方法
    首页banner特效
    等待加载提示
    缩略图轮播
    遍历input。select option 选中的值
    django1补充
    pythonweb框架django框架1
    图书馆管理系统的页面设计
  • 原文地址:https://www.cnblogs.com/zeroingToOne/p/7912095.html
Copyright © 2020-2023  润新知