Maximum Depth of Binary Tree--LeetCode
题目:
Given a binary tree, find its minimum depth.
The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.
使用递归的方法为:
int MaxDepth(BinTree* root)
{
if(root == NULL)
return 0;
else
return max(MaxDepth(root->left),MaxDepth(root->right))+1;
}
非递归解法一般采用层序遍历(相当于图的BFS),因为如果使用其他遍历方式也需要同样的复杂度O(n). 层序遍历理解上直观一些,维护到最后的level便是树的深度。代码如下:
int MaxDepth(BinTree* root)
{
if(root == NULL)
return 0;
deque<BinTree*> de;
int num;
int curnum=0;
int level=0;
BinTree* node;
de.push_back(root);
num =1;
while(!de.empty())
{
node = de.front();
de.pop_front();
num--;
if(node->left != NULL)
{
de.push_back(node->left);
curnum++;
}
if(node->right !=NULL)
{
de.push_back(node->right);
curnum++;
}
if(num ==0)
{
num =curnum;
curnum =0;
level++;
}
}
return level;
}
还没有评论,来说两句吧...