完全二叉树的判断
2015-10-16 21:28
274 查看
bool is_complete(Tree *root)
{
queue<Tree *> q;
Tree *ptr;
// 进行广度优先遍历(层次遍历),并把NULL节点也放入队列
q.push(root);
while ((ptr = q.pop()) != NULL)
{
q.push(ptr->left);
q.push(ptr->right);
}
// 判断是否还有未被访问到的节点
while (!q.is_empty())
{
ptr = q.pop();
// 有未访问到的的非NULL节点,则树存在空洞,为非完全二叉树
if (NULL != ptr)
{
return false;
}
}
return true;
}
{
queue<Tree *> q;
Tree *ptr;
// 进行广度优先遍历(层次遍历),并把NULL节点也放入队列
q.push(root);
while ((ptr = q.pop()) != NULL)
{
q.push(ptr->left);
q.push(ptr->right);
}
// 判断是否还有未被访问到的节点
while (!q.is_empty())
{
ptr = q.pop();
// 有未访问到的的非NULL节点,则树存在空洞,为非完全二叉树
if (NULL != ptr)
{
return false;
}
}
return true;
}
相关文章推荐
- 兄弟郊游问题(整数相除问题)
- 求n*n阶矩阵最大子矩阵阶数
- Content-Type: application/x-www-form-urlencoded什么意思
- Linux基本操作1 - 设备操作
- android 17 activity生命周期
- lintcode 容易题:Length of Last Word 最后一个单词的长度
- java之流
- A20_debian-server_rootf_修改细节&__DDR3压力测试
- Implement strStr
- 什么是计算金融
- 命运(经典dp)
- Python--装饰器
- 解决GP服务产生的结果无法自动发布为地图服务的问题
- 【特征匹配】PCA-SIFT原理及源码解析
- 工作中svn 使用记录
- 各种Adapter的用法
- 解决 “invalid package Applications built with SDK 9.0 or later must be packaged as proper IPA files.”s
- 用两个栈实现队列
- HTTP
- 学习Unity 3d,跟着雨潭老师的脚步前进。。。