首页 > 其他分享 >完全二叉树的节点数

完全二叉树的节点数

时间:2022-10-24 20:35:30浏览次数:77  
标签:perfect 子树 完全 BT 二叉树 logN 节点

222. 完全二叉树的节点个数

中文语境和英文语境似乎有点区别,我们说的完全二叉树对应英文 Complete Binary Tree,没有问题。但是我们说的满二叉树对应英文 Perfect Binary Tree,而英文中的 Full Binary Tree 是指一棵二叉树的所有节点要么没有孩子节点,要么有两个孩子节点

完全二叉树节点数计算的复杂度

  1. Complete BT必然从root开始,有一半是perfect BT(O(logN)),另一半可能也是perfect BT或者Complete BT

  2. 如果是Complete BT,那么又回到上一层的逻辑——即一半子树是perfect BT,另一半是Complete BT

  3. 那么最坏的情况下就是,每一层都是一半是perfect BT,另一半半complete BT。并且你需要继续去下一层去计算complete BT的那一半子树。

  4. 那么最多需要计算几次这种一半子树呢?就是整个树的深度/高度——O(logN)。每次计算量是多少呢?O(logN)。所以总的计算量是O((logN)^2)

举例子算一下,如果6层树(节点数大概为N),最坏情况下

  • 第一层,只有root

  • 第二层,一半是perfect BT,O(logN),另一半需要在第三层分左右子树计算

  • 第三层,一半是perfect BT,O(logN),另一半需要在第四层分左右子树计算

  • 第四层,一半是perfect BT,O(logN),另一半需要在第五层分左右子树计算

  • 第五层,一半是perfect BT,O(logN),另一半需要在第六层分左右子树计算

  • 第六层,是最后一层,怎么都是perfect BT,O(logN)

总计算量就是

O() = 5*O(logN) = (O(logN)-1)*O(logN) = O(logN)*O(logN) = O((logN)^2)
 

标签:perfect,子树,完全,BT,二叉树,logN,节点
From: https://www.cnblogs.com/liuzaiyuan/p/16822684.html

相关文章

  • 力扣 114. 二叉树展开为链表-原地算法(O(1) 额外空间)详解
    114.二叉树展开为链表给你二叉树的根结点 root ,请你将它展开为一个单链表:展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而......
  • 【二叉树】两棵二叉搜索树中的所有元素
    0x00题目给你​​root1​​​和​​root2​​​这两棵二叉搜索树请你返回一个列表其中包含​​​两棵树​​​中的所有整数并按​​升序​​排序0x01思路二叉搜......
  • 【二叉树】删点成林
    0x00题目给出二叉树的根节点​​root​​​树上每个节点都有一个不同的值如果节点值在​​to_delete​​中出现我们就把该节点从树上​​删去​​最后得到一个森林(......
  • 【二叉树】二叉树中的最长交错路径
    0x00题目给你一棵以​​root​​为根的二叉树,二叉树中的交错路径定义如下:选择二叉树中​​任意​​​节点和一个方向(​​左​​​或者​​右​​​)如果前进方向为​​......
  • 【二叉树】最大层内元素和
    0x00题目给你一个二叉树的根节点​​root​​​设根节点位于二叉树的第​​1​​层而根节点的子节点位于第​​2​​层依此类推请返回层内元素之和​​​最大​​......
  • 数据结构---二叉树
    二叉树的结构体:左右子树指针(Tree*) 值(int)typedefstructTree{chardata;structTree*lchild,*rchild;}*BiTree;二叉树的先序创建BiTreeCreate(......
  • 动力节点——day03
    接收键盘的输入:1.创建一个键盘扫描器对象java.util.Scanners=newScanner(System.in);2.接收用户输入s.nextInt();静态变量在类加载的时候就分配内存了,实例变量在对象......
  • 2022.10.20-C 二叉树
    题意有一颗二叉树,满足一个结点要么是叶子结点,要么有两个儿子。同时,不存在一个叶子结点,使得它到根的路径上经过了\(\gem\)条向左的边。(左右子树有区别)对于\(1\lek\l......
  • 无向图中 生成树,完全图,连通图 的区别
    图按照有无方向分为无向图和有向图。无向图由定点和边构成。有向图由定点和弧构成,弧有弧尾和弧头之分。 如果任意两个顶点之间都存在边叫做完全图。......
  • 单链表插入和删除一个节点的伪代码算法
    插入设ai-1节点为pai+1节点为q插入节点为t则p-->t-->next=q-->next删除设ai-1节点为pai+1节点为q删除的字节为tp-->next=t-->nextfree(t)参考链接https://bl......