最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++ 數(shù)據(jù)結(jié)構(gòu)完全二叉樹的判斷

 更新時間:2017年06月06日 17:15:33   作者:BabysBreath_hl  
這篇文章主要介紹了C++ 數(shù)據(jù)結(jié)構(gòu)完全二叉樹的判斷的相關(guān)資料,需要的朋友可以參考下

C++ 數(shù)據(jù)結(jié)構(gòu)完全二叉樹的判斷

完全二叉樹(Complete Binary Tree):若設(shè)二叉樹的深度為h,除第h層外,其他各層(1~h-1)的節(jié)點數(shù)都達(dá)到最大個數(shù),第h層所有的節(jié)點都連續(xù)集中在最左邊,這就是完全二叉樹。完全二叉樹由滿二叉樹而引起來的。對于深度為K的,有n個節(jié)點的二叉樹,當(dāng)且僅當(dāng)每一個節(jié)點都與深度為K的滿二叉樹中編號從1到n的節(jié)點一一對應(yīng)時稱之為完全二叉樹。

注意:滿二叉樹一定是完全二叉樹,但完全二叉樹不一定是滿二叉樹。

完全二叉樹的特點:完全二叉樹的效率極高,堆是一種完全二叉樹或者近似完全二叉樹,像十分常用的排序算法、Dijkstra算法、Prim算法等都要用堆才能優(yōu)化。

判斷完全二叉樹的方法:從上圖我們可以看出,完全二叉樹可能會出現(xiàn)以下情況:左子樹存在,右子樹不存在;左子樹存在,有字?jǐn)?shù)存在;左、右子樹都不存在;所以我們可以利用廣度優(yōu)先遍歷(層序遍歷)將二叉樹進(jìn)行遍歷,設(shè)置一個標(biāo)志位,當(dāng)遇到一個空節(jié)點時,將標(biāo)志位為修改;當(dāng)后面在遇到有效節(jié)點并且標(biāo)志位被修改時,則該二叉樹不是完全二叉樹。

當(dāng)該二叉樹為空時、修改標(biāo)志位后無有效節(jié)點時,該二叉樹為完全二叉樹。

代碼實現(xiàn):

#include<iostream> 
using namespace std; 
#include<queue> 
 
template<class T> 
struct TreeNode //二叉樹結(jié)點 
{ 
  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; //設(shè)置標(biāo)志位 
    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; //修改標(biāo)志位 
    } 
    return true; 
  } 
  return true; 
} 

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • 有關(guān)C++中類類型轉(zhuǎn)換操作符總結(jié)(必看篇)

    有關(guān)C++中類類型轉(zhuǎn)換操作符總結(jié)(必看篇)

    下面小編就為大家?guī)硪黄嘘P(guān)C++中類類型轉(zhuǎn)換操作符總結(jié)(必看篇)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • C++實現(xiàn)水仙花數(shù)判斷實例

    C++實現(xiàn)水仙花數(shù)判斷實例

    大家好,本篇文章主要講的是C++實現(xiàn)水仙花數(shù)判斷實例,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • VS2019 更新MSDN并創(chuàng)建快捷方式的實現(xiàn)

    VS2019 更新MSDN并創(chuàng)建快捷方式的實現(xiàn)

    這篇文章主要介紹了VS2019 更新MSDN并創(chuàng)建快捷方式的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • socket多人聊天程序C語言版(一)

    socket多人聊天程序C語言版(一)

    這篇文章主要為大家詳細(xì)介紹了socket多人聊天程序C語言版,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • C++二分查找算法實例

    C++二分查找算法實例

    這篇文章主要為大家詳細(xì)介紹了C++二分查找算法的實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • C語言循環(huán)鏈表的原理與使用操作

    C語言循環(huán)鏈表的原理與使用操作

    無論是靜態(tài)鏈表還是動態(tài)鏈表,有時在解決具體問題時,需要我們對其結(jié)構(gòu)進(jìn)行稍微地調(diào)整。比如,可以把鏈表的兩頭連接,使其成為了一個環(huán)狀鏈表,通常稱為循環(huán)鏈表
    2022-05-05
  • C++變量引用的概念介紹

    C++變量引用的概念介紹

    這篇文章主要介紹了C++變量引用的概念介紹,簡單提到了與指針概念的不同,通過代碼場景分析給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-08-08
  • 如何用C++制作LeetCode刷題小技巧-錯題記錄本

    如何用C++制作LeetCode刷題小技巧-錯題記錄本

    這篇文章主要介紹了如何用C++制作LeetCode刷題小技巧-錯題記錄本的方法,需要的朋友可以參考下
    2021-04-04
  • c++結(jié)構(gòu)體排序方式(1條件,多條件)

    c++結(jié)構(gòu)體排序方式(1條件,多條件)

    這篇文章主要介紹了c++結(jié)構(gòu)體排序方式(1條件,多條件),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • C++輕量級界面開發(fā)框架ImGUI介紹小結(jié)

    C++輕量級界面開發(fā)框架ImGUI介紹小結(jié)

    如果從事過C++?Windows客戶端開發(fā),大家對MFC、Qt、DuiLib等各種DirectUI應(yīng)該有了解,本篇給大家介紹一個超級輕量級的C++開源跨平臺圖形界面框架ImGUI,感興趣的可以了解一下
    2021-11-11

最新評論

福清市| 延津县| 越西县| 乌拉特后旗| 福建省| 梧州市| 曲麻莱县| 杭锦后旗| 古田县| 漾濞| 威信县| 沛县| 漾濞| 安乡县| 临海市| 巴东县| 房产| 平邑县| 遂川县| 安国市| 桦川县| 靖西县| 栾城县| 宝山区| 民乐县| 康马县| 鞍山市| 荔波县| 绥阳县| 仙居县| 武威市| 林周县| 张家界市| 芷江| 大渡口区| 台前县| 安平县| 老河口市| 盐山县| 广宗县| 呼和浩特市|