全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

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小时内与您取得联系。