C++ 数据结构完全二叉树的判断

完全二叉树(Complete Binary Tree):若设二叉树的深度为h,除第h层外,其他各层(1~h-1)的节点数都达到最大个数,第h层所有的节点都连续集中在最左边,这就是完全二叉树。完全二叉树由满二叉树而引起来的。对于深度为K的,有n个节点的二叉树,当且仅当每一个节点都与深度为K的满二叉树中编号从1到n的节点一一对应时称之为完全二叉树。
注意:满二叉树一定是完全二叉树,但完全二叉树不一定是满二叉树。
完全二叉树的特点:完全二叉树的效率极高,堆是一种完全二叉树或者近似完全二叉树,像十分常用的排序算法、Dijkstra算法、Prim算法等都要用堆才能优化。
判断完全二叉树的方法:从上图我们可以看出,完全二叉树可能会出现以下情况:左子树存在,右子树不存在;左子树存在,有字数存在;左、右子树都不存在;所以我们可以利用广度优先遍历(层序遍历)将二叉树进行遍历,设置一个标志位,当遇到一个空节点时,将标志位为修改;当后面在遇到有效节点并且标志位被修改时,则该二叉树不是完全二叉树。
当该二叉树为空时、修改标志位后无有效节点时,该二叉树为完全二叉树。
代码实现:
#include<iostream>
using namespace std;
#include<queue>
template<class T>
struct TreeNode //二叉树结点
{
T _value;
TreeNode<T>* _left;
TreeNode<T>* _right;
TreeNode(const T& value)
:_value(value)
, _left(NULL)
, _right(NULL)
{}
};
template<class T>
bool Is_completeTree(TreeNode<T>* node)
{
queue<TreeNode<T>*> q;
if (node != NULL)
{
q.push(node);
TreeNode<T>* cur = NULL;
bool flag = false; //设置标志位
while (!q.empty())
{
cur = q.front();
q.pop();
if (cur)
{
if (flag)
return false;
q.push(cur->_left);
q.push(cur->_right);
}
else
flag = true; //修改标志位
}
return true;
}
return true;
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# C++
# 数据结构完全二叉树的判断
# 完全二叉树
# C++二叉树结构的建立与基本操作
# c++二叉树的几种遍历算法
# C++非递归建立二叉树实例
# C++实现二叉树遍历序列的求解方法
# C++实现二叉树基本操作详解
# C++ 遍历二叉树实例详解
# C++合并二叉树的思路与示例代码
# 二叉树
# 子树
# 遍历
# 是一种
# 都不
# 这就是
# 我们可以
# 数据结构
# 希望能
# 要用
# 不存在
# 可以看出
# 极高
# 谢谢大家
# 都与
# 为空
# 上图
# 称之为
# 则该
# pre
相关文章:
威客平台建站流程解析:高效搭建教程与设计优化方案
建站之星微信建站一键生成小程序+多端营销系统
如何在IIS中配置站点IP、端口及主机头?
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?
建站主机SSH密钥生成步骤及常见问题解答?
唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?
武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?
宝塔建站教程:一键部署配置流程与SEO优化实战指南
如何高效配置IIS服务器搭建网站?
武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?
如何快速生成专业多端适配建站电话?
建站之星如何助力企业快速打造五合一网站?
番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?
如何用好域名打造高点击率的自主建站?
如何选择高性价比服务器搭建个人网站?
电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?
电商网站制作价格怎么算,网上拍卖流程以及规则?
如何选择高效稳定的ISP建站解决方案?
建站之星如何开启自定义404页面避免用户流失?
如何用IIS7快速搭建并优化网站站点?
建站168自助建站系统:快速模板定制与SEO优化指南
表情包在线制作网站免费,表情包怎么弄?
ppt制作免费网站有哪些,ppt模板免费下载网站?
网站制作话术技巧,网站推广做的好怎么话术?
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
广州顶尖建站服务:企业官网建设与SEO优化一体化方案
香港服务器WordPress建站指南:SEO优化与高效部署策略
如何零基础开发自助建站系统?完整教程解析
七夕网站制作视频,七夕大促活动怎么报名?
建站之星导航如何优化提升用户体验?
微网站制作教程,我微信里的网站怎么才能复制到浏览器里?
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
活动邀请函制作网站有哪些,活动邀请函文案?
宝塔Windows建站如何避免显示默认IIS页面?
西安专业网站制作公司有哪些,陕西省建行官方网站?
在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?
广德云建站网站建设方案与建站流程优化指南
深圳网站制作培训,深圳哪些招聘网站比较好?
css网站制作参考文献有哪些,易聊怎么注册?
招商网站制作流程,网站招商广告语?
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
C++如何将C风格字符串(char*)转换为std::string?(代码示例)
如何在腾讯云服务器上快速搭建个人网站?
公司网站制作费用多少,为公司建立一个网站需要哪些费用?
青岛网站建设如何选择本地服务器?
定制建站平台哪家好?企业官网搭建与快速建站方案推荐
贸易公司网站制作流程,出口贸易网站设计怎么做?
专业网站制作服务公司,有哪些网站可以免费发布招聘信息?
Python如何创建带属性的XML节点
*请认真填写需求信息,我们会在24小时内与您取得联系。