判断二叉树是否为完全二叉树
来源:互联网 发布:mac sdk 配环境变量 编辑:程序博客网 时间:2024/05/01 05:19
原理
从二叉树的根层序遍历直到遍历到第一个NULL,然后继续遍历,如果还有结点则该树不是完全二叉树。
实现代码
1、第一种
bool _IsEntireTree(BinaryTreeNode<T>* pRoot){if (pRoot == NULL)return true;queue<BinaryTreeNode<T>* > q;q.push(pRoot);//遍历链表直到NULL结点,该循环退出,则已经标记了一个NULLwhile (q.front()){BinaryTreeNode<T>* pFront = q.front();q.push(pFront->_pLeft);q.push(pFront->_pRight);q.pop();}while (!q.empty())//队列不为空{if (q.front() != NULL)//队列头节点还不为空,则不是完全二叉树return false;q.pop();}return true;}2、第二种
bool _IsEntireTree(BinaryTreeNode<T>* pRoot){if (pRoot == NULL)return true;if (pRoot->_pLeft == NULL && pRoot->_pRight == NULL)return true;queue<BinaryTreeNode<T>* > q;q.push(pRoot);bool flag = false;//用来标记队列中的NULLwhile (!q.empty()){BinaryTreeNode<T>* pTemp = q.front();if (pTemp != NULL){if (flag)//队列不为空且队列中第二次出现NULL,则该二叉树不是完全二叉树return false;q.push(pTemp->_pLeft);q.push(pTemp->_pRight);}elseflag = true;//当队列中出现一次NULL标记一次q.pop();}return true;}
阅读全文
0 0
- 判断一棵树是否为完全二叉树
- 判断是否为完全二叉树
- 判断一棵树是否为完全二叉树
- 判断是否为完全二叉树
- 判断一棵树是否为完全二叉树
- 判断是否为完全二叉树
- 判断一棵树是否为完全二叉树
- 判断是否为完全二叉树
- 判断一棵二叉树是否为完全二叉树
- 判断一棵二叉树是否为完全二叉树
- 判断二叉树是否为完全二叉树
- 判断一棵二叉树是否为完全二叉树
- 判断二叉树是否为完全二叉树
- 二叉树问题---判断一棵树是否为完全二叉树
- 判断是否完全二叉树
- 二叉树系列五:判断二叉树是否为完全二叉树
- 判断一个树是否为完全二叉树
- [面试] 判断一棵树是否为完全二叉树
- Android属性动画之ValueAnimator
- XZ_iOS之函数式编程和链式编程
- Java 错误:找不到或无法加载主类(源文件中含有包名 package)
- Vue.js 组件和组件通信
- 生产消费中的死锁问题
- 判断二叉树是否为完全二叉树
- 【PAT甲级】1079. Total Sales of Supply Chain (25)
- 7.30小记
- bash: 一键安装Ananconda & 一键设置conda永久镜像
- hdu 6052单调栈 双指针
- CSS深入理解(1)margin
- DPDK 内存管理(二)(rte_mempool 内存管理)
- 模拟实现atoi函数
- android 城市选择