二叉树的最小深度
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);
}
}
};
二叉树的最小深度为根节点到最近叶子节点的距离。
您在真实的面试中是否遇到过这个题?
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);
}
}
};
相关文章推荐
- lintcode 二叉树的最小深度
- LeetCode:寻找二叉树的最小深度
- 1. minimum-depth-of-binary-tree 二叉树的最小深度
- 二叉树的最小深度
- LeetCode—二叉树的最大最小深度
- 【LeetCode-面试算法经典-Java实现】【111-Minimum Depth of Binary Tree(二叉树的最小深度)】
- Leetcode Minimum Depth of Binary Tree 二叉树最小深度
- 二叉树最大深度和最小深度
- Leetcode039--二叉树的最小深度
- lintcode--155. 二叉树的最小深度
- Minimum Depth of Binary Tree 二叉树的最小深度
- Leetcode 111. Minimum Depth of Binary Tree 二叉树最小深度
- 【LeetCode】Minimum Depth of Binary Tree 二叉树的最小深度 java
- lintcode minimum-depth-of-binary-tree 二叉树最小深度
- Minimum Depth of Binary Tree 二叉树最小深度
- 二叉树系列---求出二叉树的最小深度
- 二叉树的最小深度
- [LeetCode]111. Minimum Depth of Binary Tree--二叉树的最小深度
- LintCode 二叉树的最小深度
- 求一棵二叉树的最小深度