二叉树系列五:判断二叉树是否为完全二叉树
来源:互联网 发布:美国滑板鞋牌子 知乎 编辑:程序博客网 时间:2024/05/22 02:28
满二叉树的定义如下:一个深度为k,结点个数为2^k-1的二叉树为满二叉树;完全二叉树的定义如下:二叉树只有最下层和次下层存在叶子结点,并且最下层的叶子结点只能集中在该层最左边的位置,显然,满二叉树也是完全二叉树。
那该如何判断一棵二叉树是否为完全二叉树呢?任意一棵二叉树,我们可以将它补成满二叉树,这样,没有结点的地方都为null。在层次遍历的时候,如果是完全二叉树,这些null结点一定在层次遍历的末尾,所以,当遍历至null的时候,二叉树的遍历已经完成;但是,如果这棵树不是完全二叉树,当我们遍历到null的时候,会发现null之后还有一些未被遍历的值。因此,我们可以先将二叉树补成满二叉树,在进行层次遍历,从而判定是否为完全二叉树。
以下是C++实现的源代码:
bool JudgeCompleteBiTree(BiTree root){ if(root == NULL) return true; deque<BiTree> d; d.push_back(root); BiTree temp = root; //将二叉树补成满二叉树 while(temp) { d.push_back(temp->Lchild); d.push_back(temp->Rchild); temp = d.front(); d.pop_front(); } //判断当前剩余的结点中是否存在非null结点 while(d.size()) { temp = d.front(); if(temp != NULL) return false; d.pop_front(); } return true;}
阅读全文
0 0
- 二叉树系列五:判断二叉树是否为完全二叉树
- 判断一棵树是否为完全二叉树
- 判断是否为完全二叉树
- 判断一棵树是否为完全二叉树
- 判断是否为完全二叉树
- 判断一棵树是否为完全二叉树
- 判断是否为完全二叉树
- 判断一棵树是否为完全二叉树
- 判断是否为完全二叉树
- 判断一棵二叉树是否为完全二叉树
- 判断一棵二叉树是否为完全二叉树
- 判断二叉树是否为完全二叉树
- 判断一棵二叉树是否为完全二叉树
- 判断二叉树是否为完全二叉树
- 二叉树问题---判断一棵树是否为完全二叉树
- 二叉树系列问题——判断一棵树是否为完全二叉树
- 判断是否完全二叉树
- 【二叉树】判断二叉树是否为平衡二叉树
- 10.19
- 单链表 尾插入法
- Discuz can't find "pre_forum_rsscache"的解决方案
- 树和二叉树
- jvm知识点总览
- 二叉树系列五:判断二叉树是否为完全二叉树
- 笔试10.19-2
- 解密Spring Boot整合Dubbo RPC框架
- Win 10 + CodeBlocks 配置 OpenGL
- LeetCode100. Same Tree
- C#一个服务器端多个客户端Socket通信
- bzoj 1123 BLO
- Bzoj 1036: [ZJOI2008]树的统计Count
- < 笔记 > Git