成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > 數(shù)據(jù)結(jié)構(gòu) 二叉樹的遞歸與非遞歸

數(shù)據(jù)結(jié)構(gòu) 二叉樹的遞歸與非遞歸

熱門標簽:昆明電銷機器人價格 地圖標注人員分布 益陽400電話申請辦理流程 上海機器人外呼系統(tǒng)哪家好 江西全自動外呼系統(tǒng)報價 400的電話一般從哪里辦理 春運地圖標注app 怎么用百度地圖標注坐標 梧州防封電銷卡

數(shù)據(jù)結(jié)構(gòu) 二叉樹的遞歸與非遞歸

實例代碼:

#include iostream> 
#include queue> 
#include stack> 
#include assert.h> 
using namespace std; 
templateclass T> 
struct BinaryTreeNode 
{ 
  BinaryTreeNodeT>* _left; 
  BinaryTreeNodeT>* _right; 
  T _data; 
  BinaryTreeNode(const T x) 
    :_left(NULL) 
    , _right(NULL) 
    , _data(x) 
  {} 
    }; 
template class T> 
class BinaryTree 
{ 
  typedef BinaryTreeNodeT> Node; 
public: 
  BinaryTree() 
    :_root(NULL) 
  {} 
  BinaryTree(T* a, size_t n, const T invalid) 
  { 
    size_t index = 0; 
     _root=CreateTree(a, n, invalid, index); 
  } 
  BinaryTree(const BinaryTreeT> t) 
  {  
    _root = _Copy(t._root); 
  } 
  BinaryTreeT> operator=( BinaryTreeT> t) 
  { 
    swap(_root,t._root); 
    return *this; 
  } 
  ~BinaryTree() 
  { 
      _DestroyTree(_root); 
  } 
  Node* CreateTree(const T* a, size_t n, const T invalid, size_t index) 
  { 
    assert(a); 
    Node* root = NULL; 
    if (index  n  a[index] != invalid) 
    { 
      root = new Node(a[index]); 
      root->_left = CreateTree(a, n, invalid, ++index); 
      root->_right = CreateTree(a, n, invalid, ++index); 
    } 
    return root; 
  } 

 先序遍歷(遞歸法)  

 void PrevOrder() 
  { 
    _PrevOrder(_root); 
    cout  endl; 
  } 
  //先序遍歷非遞歸 
  void PrevOrderNorR( ) 
  { 
    Node* cur = _root; 
    stack Node* >s; 
    while (cur||!s.empty()) 
    { 
      while (cur) 
      { 
        cout  cur->_data  " "; 
        s.push(cur); 
        cur = cur->_left; 
      } 
      Node* top = s.top(); 
      s.pop(); 
      cur = top->_right; 
    } 
    cout  endl; 
  } 

后序遍歷     

 void PostOrder() 
  { 
    _PostOrder(_root); 
    cout  endl; 
  } 
  //后序遍歷非遞歸 
  void PostOrderNorR() 
  {  
      Node* cur = _root; 
      Node* prev = NULL; 
      stack Node* >s; 
      while (cur || !s.empty()) 
      { 
        while (cur) 
        { 
          s.push(cur); 
          cur = cur->_left; 
        } 
        Node* top = s.top(); 
        if (NULL==top->_right  prev==top->_right) 
        { 
          cout  top->_data  " "; 
           s.pop(); 
           prev = top; 
        } 
        cur = top->_right; 
      } 
      cout  endl; 
  } 
 
  //中序遍歷 
  void InOrder() 
  { 
    _InOrder(_root); 
    cout  endl; 
  } 
  //中序遍歷非遞歸 
  void InOrderNorR() 
  { 
    Node* cur = _root; 
    stack Node* >s; 
    while (cur || !s.empty()) 
    { 
      while (cur) 
      { 
        s.push(cur); 
        cur = cur->_left; 
      } 
      Node* top = s.top(); 
      s.pop(); 
      cout  top->_data  " "; 
      cur = top->_right; 
    } 
    cout  endl; 
  } 
 
  //節(jié)點個數(shù) 
  size_t Size() 
  { 
    return _Size(_root); 
  } 
  //葉子節(jié)點個數(shù) 
  size_t LeafSize() 
  { 
    return _LeafSize(_root); 
  } 
  //樹的深度 
  size_t Depth() 
  { 
    return _Depth(_root); 
  }  
  size_t GetKLevel(size_t k) 
  { 
    return _GetKLevel(_root,k); 
  } 
  // 查找 
  Node* Find(size_t x) 
  { 
    return _Find(_root,x); 
  } 
  //層序遍歷 
  void LevelOrder() 
  { 
    queueNode*> q; 
    if (_root) 
    { 
      q.push(_root); 
    } 
    while (!q.empty()) 
    { 
      Node* front = q.front(); 
      cout  front->_data  " "; 
      q.pop(); 
      if (front->_left) 
      { 
        q.push(front->_left); 
      } 
      if (front->_right) 
      { 
        q.push(front->_right); 
      } 
    } 
    cout  endl; 
  } 
   
protected: 
  Node* _Copy(Node* root) 
  { 
    if (root==NULL) 
    { 
      return NULL; 
    } 
    Node* NewRoot = new Node(root->_data); 
    NewRoot->_left = _Copy(root->_left); 
    NewRoot->_right = _Copy(root->_right); 
    return NewRoot; 
  } 
  void _DestroyTree(Node* root) 
  { 
    if (NULL==root) 
    { 
      return; 
    } 
   _DestroyTree(root->_left); 
   _DestroyTree(root->_right); 
   delete root; 
  } 
  void _PrevOrder(BinaryTreeNodeT>* root) 
  { 
    if (root) 
    { 
      cout  root->_data  " ";  
      _PrevOrder(root->_left); 
      _PrevOrder(root->_right); 
    }   
  } 
  void _PostOrder(BinaryTreeNodeT>* root) 
  { 
    if (root) 
    { 
      _PostOrder(root->_left); 
      _PostOrder(root->_right); 
      cout  root->_data  " "; 
    } 
  } 
  void _InOrder(BinaryTreeNodeT>* root) 
  { 
    if (root) 
    { 
      _InOrder(root->_left); 
      cout  root->_data  " "; 
      _InOrder(root->_right); 
       
    } 
  } 
  int _Size(BinaryTreeNodeT>* root) 
  { 
   if (root==0) 
   { 
     return 0; 
   } 
   return _Size(root->_left) + _Size(root->_right) + 1; 
  } 
  int _LeafSize(BinaryTreeNodeT>* root) 
  { 
    if (root==NULL) 
    { 
    return 0; 
    } 
    else if (root->_left == NULLroot->_right == NULL) 
    { 
      return 1; 
    } 
    return _LeafSize(root->_left) + _LeafSize(root->_right); 
  } 
  int _Depth(Node* root) 
  { 
    if (root==NULL) 
    { 
      return 0; 
    } 
    int left = _Depth(root->_left); 
    int right = _Depth(root->_right); 
    return left > right ? left + 1 : right + 1; 
  } 
 
 
  int _GetKLevel(Node* root, size_t k) 
  { 
    assert(k>0); 
    if (root==NULL) 
    { 
      return 0; 
    } 
    else if (k==1) 
    { 
      return 1; 
    } 
    return _GetKLevel(root->_left, k - 1) + _GetKLevel(root->_right, k - 1); 
  } 
  Node* _Find(Node* root, const T x) 
  { 
    if (root==NULL) 
    { 
      return NULL; 
    } 
    if (root->_data==x) 
    { 
      return root; 
    } 
    Node* ret = _Find(root->_left,x); 
    if (ret != NULL) 
      return ret; 
    return _Find(root->_right, x); 
  } 
 
  private: 
  BinaryTreeNodeT>* _root; 
}; 
 
 
 
void TestBinaryTree() 
{ 
  int array[10] = { 1, 2, 3, '#', '#', 4, '#', '#', 5, 6 }; 
  BinaryTreeint> t1(array,sizeof(array)/sizeof(array[0]),'#'); 
  BinaryTreeint>t2(t1); 
  BinaryTreeint> t3; 
  t3 = t2; 
  t2.LevelOrder(); 
  t3.LevelOrder(); 
  t1.LevelOrder(); 
  t1.PrevOrder(); 
  t1.PrevOrderNorR(); 
  t1.InOrder(); 
  t1.InOrderNorR(); 
  t1.PostOrder(); 
  t1.PostOrderNorR(); 
  cout  endl; 
  cout  t1.Size()  endl; 
  cout  t1.LeafSize()  endl; 
  cout  t1.Depth()  endl; 
 
  cout  t1.GetKLevel(2)  endl; 
  cout  t1.Find(2)  endl; 
} 

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

您可能感興趣的文章:
  • C++ 數(shù)據(jù)結(jié)構(gòu)二叉樹(前序/中序/后序遞歸、非遞歸遍歷)
  • C++使用遞歸和非遞歸算法實現(xiàn)的二叉樹葉子節(jié)點個數(shù)計算方法
  • C++基于遞歸和非遞歸算法判定兩個二叉樹結(jié)構(gòu)是否完全相同(結(jié)構(gòu)和數(shù)據(jù)都相同)
  • C++基于遞歸和非遞歸算法求二叉樹鏡像的方法
  • C++非遞歸隊列實現(xiàn)二叉樹的廣度優(yōu)先遍歷
  • C++非遞歸建立二叉樹實例
  • C語言數(shù)據(jù)結(jié)構(gòu)之二叉樹的非遞歸后序遍歷算法

標簽:惠州 贛州 河南 北京 亳州 新疆 九江 懷化

巨人網(wǎng)絡(luò)通訊聲明:本文標題《數(shù)據(jù)結(jié)構(gòu) 二叉樹的遞歸與非遞歸》,本文關(guān)鍵詞  數(shù)據(jù)結(jié)構(gòu),二叉,樹,的,遞歸,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《數(shù)據(jù)結(jié)構(gòu) 二叉樹的遞歸與非遞歸》相關(guān)的同類信息!
  • 本頁收集關(guān)于數(shù)據(jù)結(jié)構(gòu) 二叉樹的遞歸與非遞歸的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    91亚洲资源网| 国产成人午夜片在线观看高清观看| 中文字幕av播放| 婷婷综合五月天| 琪琪五月天综合婷婷| 麻豆视频在线观看| 欧洲免费av| 色香色香欲天天天影视综合网| 黄色三级中文字幕| 国产精品探花一区二区在线观看| 疯狂蹂躏欧美一区二区精品| 亚洲制服丝袜av| 美女黄视频在线播放| 久久国产66| 中国一级特黄录像播放| 成人av资源| 俺去俺来也在线www色官网| 91久久视频| 日韩一区二区三区在线观看| 精品欧美一区二区久久久伦| 欧美黑人一区二区| 成人av在线资源| 久久久精品毛片| 波多野结衣在线观看一区| 日韩精品福利网站| 粉嫩aⅴ一区二区三区四区| 久久这里只精品最新地址| jjzz在线观看| 蜜桃久久久久久| 色久优优欧美色久优优| 大杳蕉精品视频在线观看| 国产韩日影视精品| 亚洲精品国产精品国自产网站| 日韩精品免费在线播放| 国产精品一区在线观看你懂的| 欧美精品成人| 欧美日韩视频一区二区三区| 免费精品99久久国产综合精品| 麻豆自创视频在线观看| 亚洲理论电影片| 日韩成人午夜影院| 成人欧美视频在线观看播放| 中文字幕日韩高清在线| 精品国产一区二区三区2021| 久久精品久久久精品美女| 国产一区二区在线免费播放| 欧美性猛交xxxxx少妇| 欧美一级播放| 国产精品综合网| 3d动漫精品啪啪一区二区下载| 91丨porny丨九色| 久久久亚洲成人| 自拍偷自拍亚洲精品被多人伦好爽| 国产专区在线视频| 久久久精品人妻一区二区三区| 亚洲精品66| 97久久人人超碰| 成人一区二区三区在线观看| 国产suv一区二区三区| 一菊综合网成人综合网| 久久99精品久久久久久动态图| 精品久久久久久亚洲精品| 91精品视频在线播放| avove在线观看| 欧美日本视频一区| 国产免费a视频| 亚洲性xxxx| 美女一区二区三区在线观看| 国产suv一区二区| 91国内精品久久久久| 亚洲综合成人婷婷小说| 黄色激情网址| 亚洲一区二区图片| 玖玖精品在线视频| 国产1区2区视频| 国产一级黄色录像片| 欧美18一12sex性处hd| 97超碰最新| 国产成人av一区二区三区不卡| 色一区二区三区| 国产精品黄色网| 欧美性受xxx黑人xyx性爽| 清纯唯美亚洲经典中文字幕| 亚洲欧美日韩一级| 国产精品亚洲一区二区三区在线观看| 亚洲欧美另类综合偷拍| 免费看黄裸体一级大秀欧美| 青青影院一区二区三区四区| av免费观看一区二区| 欧美日韩国产影片| 国产色一区二区三区| 做爰高潮hd色即是空| 国产免费一区二区三区最新不卡| 国产成人精品综合网站| 福利社在线免费视频| 国产网友自拍视频导航网站在线观看| 青青草99啪国产免费| 亚洲三级电影全部在线观看高清| 精品视频国内| 在线成人av影院| 天天干在线播放| 国产 日韩 欧美一区| 特级西西444www高清大视频| 全彩无遮拦全彩口工漫画全彩| 97人人在线视频| 日本一区二区视频在线观看| 免费观影入口看日本视频| 亚洲精品乱码久久久久久9色| 成人在线二区| 99精品人妻无码专区在线视频区| 韩国一区二区三区在线观看| 欧美人妖巨大在线| aaa在线免费观看| 黄色免费看视频| 神马久久一区二区三区| 91精品视频观看| av在线免费观看网| 欧美午夜精品久久久久久久| 91狠狠综合久久久久久| 精品人伦一区二区三区蜜桃免费| 最近免费中文字幕大全免费版视频| 国产成人+综合亚洲+天堂| 欧亚成年男女午夜| 国产精品一区二区在线播放| 夜夜爽8888| 国产精品久久婷婷六月丁香| 欧美日韩黄色影视| 999国产精品视频| 欧美日韩一卡| 欧美久久久久久| 亚洲第一精品夜夜躁人人爽| 在线精品高清中文字幕| 加勒比一区二区| 欧亚精品中文字幕| 手机av在线网站| 手机在线观看免费av| 性爱视频日本| 先锋av资源站| 国产hs免费高清在线观看| 黄在线观看免费网站ktv| 性一交一乱一乱一视频| 成人拍拍拍在线观看| 欧美激情精品| 欧美久久精品一级黑人c片| 久久久久久久久影视| 狠狠做六月爱婷婷综合aⅴ| 久久久久天天天天| 97午夜影院| а√最新版地址在线天堂| 亚洲精品一区二区三区在线| 国产精品久久久久久久天堂第1集| 国内久久精品| 一个色在线综合| 欧美三级在线播放| 韩国视频一区二区三区| 激情综合婷婷| 国产精品免费久久久久| 日韩香蕉视频| 亚洲v日本v欧美v久久精品| 色婷婷亚洲精品| 韩国福利视频一区| 伊人精品影院| 亚洲综合国产精品| 欧美精品一区二区三区久久| 国产视频在线视频| 久久国产免费看| а√天堂8资源在线| 国产视色精品亚洲一区二区| 亚洲精品国产欧美| 国产一级电影网| 色婷婷一区二区| 一区二区三区四区五区精品视频| 中文字幕字幕中文在线中不卡视频| 日本激情视频网站| 91久久久一线二线三线品牌| 在线播放毛片| 久久亚洲图片| 免费av网站在线播放| 国产精品第5页| 午夜成在线www| 久久视频免费| 欧美大片91| 国内精品久久久久久久久久久| 精品国产乱码久久久久久闺蜜| 国产精品久久久久久久久久久新郎| 99免费精品在线| 91福利精品在线观看| 欧美二区三区在线| 视频一区中文字幕精品| 国产人伦精品一区二区| 日韩午夜av| 天堂中文8资源在线8| 久久久久久久波多野高潮日日| 福利视频一二区| 日本久久久久| 天堂av免费观看| 久久久精品视频在线观看| 精品二区久久| 国产乱码午夜在线视频| 亚洲一区不卡| 老司机久久精品| 在线观看xxxxvideo| 国产精品久久久久av免费| 色综合天天综合色综合av| 国产麻豆精品95视频| 免费在线观看视频| 国产一卡二卡3卡4卡四卡在线| 久草在线资源站手机版| 成a人v在线播放| 久久影视电视剧免费网站清宫辞电视| 大肉大捧一进一出好爽动态图| 要久久电视剧全集免费| 成人做爰69片免网站| 国产精品久久久久久久第一福利| 免费观看欧美成人禁片| 日韩精品导航| 欧美体内she精高潮| 日韩一级欧美一级| 久草久草久草| 女人让男人操自己视频在线观看| 久久中文字幕电影| 丰满少妇被猛烈进入| 欧美一区二区三区四区夜夜大片| 国语自产精品视频在免费| 另类图片综合电影| 国产精品免费看一区二区三区| 天堂精品中文字幕在线| 怕怕欧美视频免费大全| 久久久九九九热| 性欧美18一19内谢| 日韩在线视频中文字幕| 色婷婷av一区二区三区之e本道| 国产精品7区| 色综合五月天| 一区二区三区四区在线免费观看| 国产精品国产三级国产专区51| 亚洲熟妇av乱码在线观看| 日韩精品第二页| 裸体丰满少妇做受久久99精品| 久久久男人天堂| 国产精品主播直播| 久草视频精品在线| 91在线小视频| 欧美大胆a视频| 欧美极品在线| 日韩精品极品毛片系列视频| 日韩pacopacomama| huan性巨大欧美| 99riav国产精品| 在线精品一区| 久久无码精品丰满人妻| 国产精品不卡一区二区三区| 欧美另类色图| 中文字幕在线播放日韩| 日本一本高清视频| 在线观看视频色| 97偷自拍亚洲综合二区| 欧美激情图区| 欧美人善zozσ性伦交| 久久国产午夜精品理论片最新版本| www.黄色在线观看| 精品众筹模特私拍视频| 欧美与黑人午夜性猛交久久久| 成人在线视频成人| 久草精品在线播放| 午夜色在线观看| 日韩av片在线播放| av资源在线免费观看| 理论不卡电影大全神| 欧美日韩在线看| 91在线免费网站| 五月天亚洲一区| 国产精品综合在线视频| 国产精品69久久| 亚洲人成网在线播放| 悠悠资源av网站| 欧美丰满美乳xxx高潮www| 天天爽人人爽夜夜爽| 一级毛片在线观| 国产精品久久久久久免费免熟| 成人午夜免费影院| 欧美三日本三级少妇三99| 亚洲AV无码精品色毛片浪潮| 午夜激情成人网| 香蕉视频色版| 2019中文在线观看| 四虎成年永久免费网站| 人妻人人澡人人添人人爽| 97超碰在线免费观看| 开心丁香婷婷深爱五月| 亚洲女人天堂在线| 暖暖在线中文免费日本| 中文字幕亚洲色图| 18岁视频在线观看| 亚洲欧美精品日韩欧美| 欧美国产一区视频在线观看| 日韩中文字幕网站| 人妻一区二区三区免费| 国产96在线亚洲| 精品少妇无遮挡毛片| 成人黄色a**站在线观看| 妺妺窝人体色www在线观看| 国产成人一区二区三区影院| 国产丝袜护土调教在线视频| 国产日韩一区二区在线| 久久久久国产精品麻豆| 国产主播av在线| 毛片毛片毛片毛片毛| 五月天婷婷视频| 中文资源在线网| 久久久久xxxx| 久久久久国产免费| 91黑人精品一区二区三区| 韩国中文字幕hd久久精品| 久热国产精品| 深夜福利在线看| 亚欧美一区二区三区| 色视频一区二区三区| 久久午夜无码鲁丝片午夜精品| 5858s免费视频成人| 一区二区三区久久久久| 国产夫妻视频| 国产网红在线观看| 激情一区二区三区| 免费午夜一级| 亚洲伦理一区二区三区| 日本不卡一区二区三区| 噜噜噜在线观看免费视频日韩|