參考 https://blog.csdn.net/hyqsong/article/details/50807183spa
1.非遞歸 .net
採用層次遍歷的方法,相似bfs的解法code
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