二叉樹的深度

參考  https://blog.csdn.net/hyqsong/article/details/50807183spa

 

1.非遞歸 .net

採用層次遍歷的方法,相似bfs的解法code

  • 每遍歷一層,level++;
  • 每一層,需使用一個變量len記錄該層的結點個數,也就是隊列的當前長度,而後依次在隊列中訪問該層的len個結點(將隊列中len個元素出隊列),並將下一層左右節點入隊列。
     1 int TreeDepth(TreeNode* pRoot)
     2     {
     3      queue<TreeNode*> q;
     4         if(!pRoot) return 0;
     5         q.push(pRoot);
     6         int level=0;
     7         while(!q.empty()){
     8             int len=q.size();
     9             level++;
    10             while(len--){
    11                 TreeNode* tem=q.front();
    12                 q.pop();
    13                 if(tem->left) q.push(tem->left);
    14                 if(tem->right) q.push(tem->right);
    15             }
    16         }
    17         return level;
    18     } 
    19  

     

遞歸blog

 

1  int TreeDepth(TreeNode* pRoot)
2     {
3         if (pRoot == NULL)
4             return 0;
5         else
6             return max(1 + TreeDepth(pRoot->left), 1 + TreeDepth(pRoot->right));
7 
8     }
9  
相關文章
相關標籤/搜索