美文网首页
找到二叉树每一层最大的数,并输出

找到二叉树每一层最大的数,并输出

作者: 帽子和五朵玫瑰 | 来源:发表于2018-05-21 10:09 被阅读0次

找到二叉树每一层最大的数,并输出

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public List<Integer> largestValues(TreeNode root) {
        List<Integer> result = new ArrayList<Integer>();
      if(root ==null){
          return result;
      }

        result.add(root.val);
        LinkedList<TreeNode> temp = new LinkedList<TreeNode>();
        LinkedList<TreeNode> queue = new LinkedList<TreeNode>();
        TreeNode current = null;
        queue.offer(root);
        while(!queue.isEmpty()){
            List<Integer> needSort = new ArrayList<Integer>(); 
            int size = queue.size();
            for(int i=0;i<size;i++){
                current = queue.poll();
                System.out.println(current.val);
                if(current.left!=null){
                    temp.offer(current.left);
                    needSort.add(current.left.val);
                }
                if(current.right!=null){
                    temp.offer(current.right);
                    needSort.add(current.right.val);
                }
            }
            
            if(!needSort.isEmpty()){
                Collections.sort(needSort);
                result.add(needSort.get(needSort.size()-1));
            }
            
            if(!temp.isEmpty()){
                int siz = temp.size();
                for(int j=0;j<siz;j++){
                    queue.offer(temp.poll());
                }
            }
            
        }
        return result;
        
    }
}

层次遍历时,queue pop出当层所有节点后,再加入下一层节点。

相关文章

  • 找到二叉树每一层最大的数,并输出

    找到二叉树每一层最大的数,并输出 层次遍历时,queue pop出当层所有节点后,再加入下一层节点。

  • 二叉树的直径

    问题1 二叉树的最大直径 原理 首先,需要定义一个变量记录二叉树的直径 其次,递归遍历,找到每一层二叉树的 递归的...

  • 剑指Offer——将二叉树打印成多行

    题目描述 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 相比较层次遍历二叉树,这个地方要求每输...

  • 剑指offer11

    题目描述 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 解题思路 其实这道题多了一个每一层输出...

  • JZ-060-把二叉树打印成多行

    把二叉树打印成多行 题目描述 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。题目链接: 把二叉树...

  • 把二叉树打印成多行

    题目描述 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 思路 宽度有限搜索的应用。每一层记录当...

  • 剑指offer.C++.code61-67

    61. 把二叉树打印成多行 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 62. 序列化二叉树...

  • 面试题32.2:把二叉树打印成多行

    题目描述 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 知识点 二叉树,队列 Qiang的思路...

  • 2019-09-11[剑指offer-]把二叉树打印成多行

    题目描述 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。

  • 把二叉树打印成多行

    题目描述 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。

网友评论

      本文标题:找到二叉树每一层最大的数,并输出

      本文链接:https://www.haomeiwen.com/subject/nyffjftx.html