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

C語言中計算二叉樹的寬度的兩種方式

 更新時間:2017年04月07日 09:54:33   投稿:lqh  
這篇文章主要介紹了C語言中計算二叉樹的寬度的兩種方式的相關資料,需要的朋友可以參考下

C語言中計算二叉樹的寬度的兩種方式

二叉樹作為一種很特殊的數(shù)據(jù)結構,功能上有很大的作用!今天就來看看怎么計算一個二叉樹的最大的寬度吧。

采用遞歸方式

下面是代碼內(nèi)容:

int GetMaxWidth(BinaryTree pointer){
  int width[10];//加入這棵樹的最大高度不超過10
  int maxWidth=0;
  int floor=1;
  if(pointer){
    if(floor==1){//如果訪問的是根節(jié)點的話,第一層節(jié)點++;
      width[floor]++;
      floor++;
      if(pointer->leftChild)
        width[floor]++;
      if(pointer->rightChild)
        width[floor]++;
    }else{
      floor++;
      if(pointer->leftChild)
        width[floor]++;
      if(pointer->rightChild)
        width[floor]++;
    }
    if(maxWidth<width[floor])
      maxWidth=width[floor];
    GetMaxWidth(pointer->leftChild);
    floor--;//記得退回一層,否則會出錯。因為已經(jīng)Get過了,所以要及時的返回。
    GetMaxWidth(pointer->rightChild);
  }
  return maxWidth;
}

采用非遞歸方式

采用非遞歸方式計算二叉樹的寬度需要借助于隊列。代碼如下:

int GetMaxWidth(BinaryTree pointer){
  if(pointer==null){
    return 0;
  }
  Queue<BinaryTreeNode> queue=new ArrayDeque<BinaryTreeNode>();
  int maxWidth=1;//最大寬度
  queue.add(pointer);
  while(true){
    int size=queue.size();//計算當前層的節(jié)點的個數(shù)
    if(size==0){
      break;
    }
    while(size>0){//如果當前層還有節(jié)點就進行下去
      BinaryTreeNode node=queue.poll();
      size--;
      if(node->leftChild)
        queue.add(node->leftChild);//當前節(jié)點的左子樹入隊
      if(node->rightChild)
        queue.add(node->rightChild);//當前節(jié)點的右子樹入隊
      maxWidth=Math.max(size,queue.size());
    }
  }
  return maxWidth;//返回計算所得的最大的二叉樹的寬度。
}

總結:

不管采用哪種方式,實際上還是利用了對二叉樹的遍歷的特點來進行的。

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

相關文章

  • C++ 整數(shù)拆分方法詳解

    C++ 整數(shù)拆分方法詳解

    整數(shù)拆分,指把一個整數(shù)分解成若干個整數(shù)的和。本文重點給大家介紹C++ 整數(shù)拆分方法詳解,非常不錯,感興趣的朋友一起學習吧
    2016-08-08
  • C語言實現(xiàn)三子棋游戲(棋盤可變)

    C語言實現(xiàn)三子棋游戲(棋盤可變)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)三子棋游戲,棋盤可變,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • C++基于灰度圖上色GrayToColorFromOther的實現(xiàn)

    C++基于灰度圖上色GrayToColorFromOther的實現(xiàn)

    本文主要介紹了C++基于灰度圖上色GrayToColorFromOther的實現(xiàn),文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧
    2021-07-07
  • c++棧內(nèi)存和堆內(nèi)存的基本使用小結

    c++棧內(nèi)存和堆內(nèi)存的基本使用小結

    本文主要介紹了c++棧內(nèi)存和堆內(nèi)存的基本使用小結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-07-07
  • C語言輸出教學日歷表的方法實例

    C語言輸出教學日歷表的方法實例

    最近幫朋友做一些C語言的練習題,期間遇到了個比較有意思的題目,下面這篇文章主要給大家介紹了關于C語言輸出教學日歷表的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • 淺析C++中memset,memcpy,strcpy的區(qū)別

    淺析C++中memset,memcpy,strcpy的區(qū)別

    本篇文章是對C++中memset,memcpy,strcpy的區(qū)別進行了詳細的分析介紹,需要的朋友參考下
    2013-07-07
  • C++基于reactor的服務器百萬并發(fā)實現(xiàn)與講解

    C++基于reactor的服務器百萬并發(fā)實現(xiàn)與講解

    這篇文章主要介紹了C++基于reactor的服務器百萬并發(fā)實現(xiàn)與講解,本文通過實例圖文相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • C語言字符串與字符數(shù)組面試題中最易錯考點詳解

    C語言字符串與字符數(shù)組面試題中最易錯考點詳解

    這篇文章主要介紹了C語言字符串與字符數(shù)組面試題中最易錯考點,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2022-09-09
  • 淺談關于C語言中#define的副作用

    淺談關于C語言中#define的副作用

    這篇文章主要介紹了關于C語言中#define的副作用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • C++按位異或運算符的使用介紹

    C++按位異或運算符的使用介紹

    本篇文章對C++按位異或運算符的使用進行了詳細的分析介紹。需要的朋友參考下
    2013-05-05

最新評論

乌鲁木齐市| 定陶县| 探索| 乐业县| 天峻县| 海林市| 太和县| 公安县| 平舆县| 金堂县| 宜兰市| 察哈| 武邑县| 临沧市| 平顶山市| 烟台市| 五台县| 封开县| 运城市| 腾冲县| 交口县| 龙陵县| 通河县| 扶绥县| 清苑县| 嘉兴市| 耿马| 保靖县| 陵水| 桐乡市| 湖北省| 镇巴县| 固始县| 宁夏| 上林县| 和平区| 石楼县| 兰西县| 恩平市| 商洛市| 台湾省|