正规二叉树和完全二叉树有什么区别?
一、正规二叉树和完全二叉树的区别
二叉树是每个节点非常多有两个儿子的树。
正规二叉树是每个节点都有两个或没有儿子的二叉树。这意味着,如果一个节点有左儿子,那么它必须有右儿子,反之亦然。
完全二叉树是一棵二叉树,其中除了可能深度为 h 或 h-1 的最后一层外,其余各层的节点数都达到最大个数,即第 i 层非常多有 2^(i-1) 个节点(i≥1)。换句话说,如果二叉树中除去最后一层节点为满二叉树,且最后一层的结点依次从左到右分布,则此二叉树被称为完全二叉树。
举个例子,下面这棵树是一棵正规二叉树:
1
/ \
2 3
但是,它不是一棵完全二叉树,因为第二层的节点数不是最大的。
延伸阅读:
二、完全二叉树与满二叉树的区别是什么
含义不同:
完全二叉树是由满二叉树而引出来的。对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。
表示不同:
对于满二叉树,除最后一层无任何子节点外,每一层上的所有结点都有两个子结点二叉树。而完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引出来的。
对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。
判断一棵树是否是完全二叉树的思路
1>如果树为空,则直接返回错
2>如果树不为空:层序遍历二叉树
2.1>如果一个结点左右孩子都不为空,则pop该节点,将其左右孩子入队列;
2.1>如果遇到一个结点,左孩子为空,右孩子不为空,则该树一定不是完全二叉树;
2.2>如果遇到一个结点,左孩子不为空,右孩子为空;或者左右孩子都为空,且则该节点之后的队列中的结点都为叶子节点,该树才是完全二叉树,否则就不是完全二叉树;

猜你喜欢LIKE
相关推荐HOT
更多>>
chmod 755与chmod +x的区别?
一、chmod 755与chmod +x的区别chmod 755 的含义是将此文件的permission flags 改为 111(7) 101(5) 101(5)。也就是755 的含义所有用户都拥有详情>>
2023-10-14 21:44:16
在SWIFT中class与struct有哪些区别?
一、在SWIFT中class与struct的区别1、继承不同class可以继承自另一个class,而struct则不能。这意味着,一个class可以通过继承来获得父类的所有...详情>>
2023-10-14 20:36:56
Java开发主要是做什么?
一、Java开发主要的用途Java是一种高级编程语言,最初由Sun Microsystems在1995年推出。Java有着丰富的应用场景,被广泛应用于桌面应用程序、We...详情>>
2023-10-14 19:50:06
PHP能做什么?
一、PHP能做什么1、Web开发PHP是一种广泛用于Web开发的脚本语言,可以用来开发各种类型的Web应用程序,包括动态网站、博客、论坛、电子商务网站...详情>>
2023-10-14 19:15:46热门推荐
技术干货






