每日一题 最大层内元素和

给你一个二叉树的根节点 root。设根节点位于二叉树的第 1 层,而根节点的子节点位于第 2 层,依此类推。
请你找出层内元素之和 最大 的那几层(可能只有一层)的层号,并返回其中 最小 的那个。
来源:力扣(LeetCode)

思路很简单,就是每层遍历,将每层的节点相加获得最大值,并记录当前层数。
层次遍历借助于队列数据结构。

 //按层遍历
    public int maxLevelSum(TreeNode root) {
        if(root==null){
            return 0;
        }
        int maxLevel=1;
        int maxSum=root.val;
        LinkedList<TreeNode> queue=new LinkedList<>();
        queue.offer(root);
        int sum=0;
        int cnt=1;
        int level=1;
        while(!queue.isEmpty()){
            TreeNode node=queue.poll();
            sum+=node.val;
            if(node.left!=null){
                queue.offer(node.left);
            }
            if(node.right!=null){
                queue.offer(node.right);
            }
            cnt--;
            if(cnt==0){
                if(sum>maxSum){
                    maxSum=sum;
                    maxLevel=level;
                }
                cnt=queue.size();
                level++;
                sum=0;
            }
        }
        return maxLevel;

    }
发布了47 篇原创文章 · 获赞 1 · 访问量 1581

猜你喜欢

转载自blog.csdn.net/chinamen1/article/details/104919661