Leetcode在线编程minimum-depth-of-binary-tree
题目链接
题目描述
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.
题意
给定树,计算出该树的最小深度
解题思路
可以考虑递归左右子树去解决树的计算问题,
对于一颗树的最小深度,考虑左右子树的联系
有3种情况
1.假设左右子树为空的话,該树最小深度就为1
2.假设左右子树都不为空,該树最小深度则是,min(左子树的最小深度,右子树的最小深度)+1
3.假设左右子树只有一个为空,则返回那个不空的子树的最小深度再加1
AC代码
class Solution {
public:
int run(TreeNode *root)
{
if(root==NULL)
return 0;
int l = -1,r = -1;
if(root->left!=NULL)
{
l = run(root->left) + 1;
}
if(root->right !=NULL)
{
r = run(root->right)+1;
}
if(l==-1&&r!=-1) //只有右孩子
return r;
if(r==-1&&l!=-1) //只有左孩子
return l;
if(l==-1&&l==-1) //没有孩子节点
return 1;
return min(l,r);
}
};