美文网首页
二叉树的宽度

二叉树的宽度

作者: KM_0d16 | 来源:发表于2019-04-27 17:19 被阅读0次

一、二叉树的宽度

二叉树的宽度是指含有最多节点数的对应层对应的节点数,我们之前提到了二叉树的层次遍历,二叉树的宽度其实也是基于层次遍历实现的。
我们只需要在每一次记录队列的长度,每一次出队列出去的是当前这一层的全部结点,这样即可通过对比每一层的长度来实现获取最大宽度


二、二叉树的宽度代码实现

public static int maxWidth(BTNode node) {
        int maxWidth = 1, width;
        ArrayDeque<BTNode> queue = new ArrayDeque<>();
        //根节点入队
        queue.add(node);
        while (!queue.isEmpty()) {
            width = queue.size();
            //若每一层的宽度大于maxWidth,则重新赋值
            maxWidth = maxWidth < width ? width :maxWidth;
            //注意这里循环的次数是width,出队的仅仅是每一层的元素
            for (int i = 0; i < width; i++) {
                BTNode nodeTemp = queue.poll();
                if (nodeTemp.leftChild != null) {
                    queue.add(nodeTemp.leftChild);
                }
                if(nodeTemp.rightChild != null) {
                    queue.add(nodeTemp.rightChild);
                }
            }
        }
        return maxWidth;
    }

三、测试代码

/**
     * 构建二叉树
     *          3
     *       2     4
     *    5   2   2  4
     * 5
     *
     * @param args
     */
    public static void main(String[] args) {
        int[] a = {3, 2, 4, 5, 2, 2, 4, 5};
        BTNode root = BTNodeUtil.createBTNodebyArray(a);
        System.out.print("该二叉树的最大宽度为:" + maxWidth(root));
    }

输出

该二叉树的最大宽度为:4

相关文章

  • 二叉树的宽度

    一、二叉树的宽度 二叉树的宽度是指含有最多节点数的对应层对应的节点数,我们之前提到了二叉树的层次遍历,二叉树的宽度...

  • 二叉树的宽度优先搜索(层次遍历,BFS)

    二叉树结构: 二叉树宽度优先搜索: 按照二叉树的层数依次从左到右访问二叉树的节点;例如:给定一个二叉树: 按照宽度...

  • 662. 二叉树最大宽度[leetcode]

    给定一个二叉树,编写一个函数来获取这个树的最大宽度。树的宽度是所有层中的最大宽度。这个二叉树与满二叉树(full ...

  • leetcode-662.二叉树最大宽度

    题目: 给定一个二叉树,编写一个函数来获取这个树的最大宽度。树的宽度是所有层中的最大宽度。这个二叉树与满二叉树(f...

  • 662. Maximum Width of Binary Tre

    给定二叉树,求二叉树的最大宽度。二叉树某层的宽度是指其最左非空节点与最右非空节点之间的跨度。 解题思路:二叉树层次...

  • 关于二叉树的算法题

    前序遍历中序遍历后序遍历判断是否是平衡二叉树判断是否是对称二叉树判断二叉树高度按照层遍历二叉树判断二叉树宽度

  • leetcode-662.二叉树最大宽度(OC)

    二叉树最大宽度 地址:https://leetcode-cn.com/problems/maximum-width...

  • 数据结构第三次作业

    第一题:二叉树的基础算法 题目 先根据二叉树的先序、中序遍历序列还原该二叉树,求出这棵二叉树的高度和宽度,以及其叶...

  • 手撕LeetCode #662——Python

    662. 二叉树最大宽度[https://leetcode-cn.com/problems/maximum-wid...

  • 求树的最大宽度

    所谓二叉树的宽度是指:二叉树各层节点个数的最大值。我们知道层序遍历二叉树是使用deque来实现的:每次打印一个节点...

网友评论

      本文标题:二叉树的宽度

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