久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

程序員面試100題(算法)之層次遍歷二叉樹(shù)(含二叉樹(shù)前序創(chuàng)建,、層次遍歷、前序遍歷)

 看風(fēng)景D人 2013-12-30
  1. // 程序員面試100題(算法)之層次遍歷二叉樹(shù)(用隊(duì)列實(shí)現(xiàn))   
  2.   
  3. #include "stdafx.h"   
  4. #include <iostream>   
  5. #include <deque>   
  6.   
  7. using namespace std;  
  8.   
  9. struct BiTreeNode  
  10. {  
  11.     BiTreeNode *leftNode;  
  12.     BiTreeNode *rightNode;  
  13.     int value;  
  14. };  
  15.   
  16. BiTreeNode *CreateBiTree(BiTreeNode *&root)  
  17. {  
  18.     int data = 0;  
  19.     cin >> data;  
  20.   
  21.     if(-1 == data)  
  22.         return NULL;  
  23.     else  
  24.     {  
  25.         root= (BiTreeNode*)malloc(sizeof(BiTreeNode));  
  26.         if(root)  
  27.         {  
  28.             root->value = data;  
  29.             root->leftNode = NULL;  
  30.             root->rightNode = NULL;  
  31.             CreateBiTree(root->leftNode);  
  32.             CreateBiTree(root->rightNode);  
  33.         }  
  34.         else  
  35.         {  
  36.             cout << "No space" <<endl;  
  37.             return NULL;  
  38.         }  
  39.     }  
  40.       
  41.     return root;  
  42. }  
  43.   
  44. void PreTraverseBiTree(BiTreeNode *root)    
  45. {    
  46.    if(root)    
  47.    {    
  48.        cout << root->value << "\t";    
  49.        PreTraverseBiTree(root->leftNode);    
  50.        PreTraverseBiTree(root->rightNode);      
  51.    }    
  52. }    
  53.   
  54. void LevelTraverse(BiTreeNode *root)  
  55. {  
  56.     deque<BiTreeNode *> dequeTree;  
  57.   
  58.     if(NULL == root)  
  59.         return;  
  60.   
  61.     dequeTree.push_back(root);  
  62.   
  63.     while(!dequeTree.empty())  
  64.     {  
  65.         BiTreeNode *node = dequeTree.front();  
  66.         cout << node->value << "\t";  
  67.         dequeTree.pop_front();  
  68.   
  69.         if(node->leftNode)     
  70.             dequeTree.push_back(node->leftNode);  
  71.   
  72.         if(node->rightNode)  
  73.             dequeTree.push_back(node->rightNode);  
  74.     }  
  75.   
  76.     cout << endl;    
  77. }  
  78.   
  79. int _tmain(int argc, _TCHAR* argv[])  
  80. {  
  81.     BiTreeNode *root = NULL;  
  82.   
  83.     cout << "Please create the tree with preorder(-1 means NULL):" << endl;    
  84.     CreateBiTree(root);  
  85.     cout << "The result of preorder traverse is:" << endl;    
  86.     PreTraverseBiTree(root);  
  87.     cout << endl;    
  88.     cout << "The result of level-traverse is:" << endl;    
  89.     LevelTraverse(root);  
  90.   
  91.     return 0;  
  92. }  

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多