您的位置:首页 > 其它

二叉树的最小深度

2017-09-29 15:49 162 查看
给定一个二叉树,找出其最小深度。
二叉树的最小深度为根节点到最近叶子节点的距离。

您在真实的面试中是否遇到过这个题? 

Yes

样例

给出一棵如下的二叉树:
        1
     /     \ 
   2       3
          /    \
        4      5  
这个二叉树的最小深度为 2

最小深度不同于最大深度,最小深度要考虑:
1:root为空,minDepth = 0;
2:  root不为空,但左右节点都为空,及就一个根结点,则minDepth = 1;
3:  root不为空,但左右几点有一个为空,如左节点为空,右节点不为空,则minDepth = 右节点minDepth + 1,同理minDepth = 左节点minDepth + 1
4:  root不为空,但左右节点也都不为空,则minDepth = min(左节点最小深度,右节点最小深度);
/**
* Definition of TreeNode:
* class TreeNode {
* public:
* int val;
* TreeNode *left, *right;
* TreeNode(int val) {
* this->val = val;
* this->left = this->right = NULL;
* }
* }
*/

class Solution {
public:
/*
* @param root: The root of binary tree
* @return: An integer
*/
int minDepth(TreeNode * root) {
// write your code here
if(root == NULL)
return 0;
else if(root->left == NULL && root->right != NULL)
{
return minDepth(root->right) + 1;
}
else if(root->left != NULL && root->right == NULL)
{
return minDepth(root->left) + 1;
}
else if(root->left == NULL && root->right == NULL)
{
return 1;
}
else if
4000
(root->left != NULL && root->right != NULL)
{
int left_length = minDepth(root->left) + 1;
int right_lenght = minDepth(root->right) + 1;
return min(left_length,right_lenght);
}
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: