二叉树的最小深度
题目描述:
求给定二叉树的最小深度。最小深度是指树的根结点到最近叶子结点的最短路径上结点的数量。
输入:
{1,2,3,4,5}
输出:
2
解法:
先判断是否为空树,不是的话,对左右子树分别判断,若左子树为空,就进入右子树并且加一,若右子树为空,,就进入左子树并加一。若左右子树都不为空,对左右子树深度进行判断,输出最小的深度。
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
class Solution {
public:
/**
*
* @param root TreeNode类
* @return int整型
*/
int run(TreeNode* root) {
// write code here
if(root == nullptr) return 0;
if(root->left == nullptr)
{
return 1 + run(root->right);
}
if(root->right == nullptr)
return 1 + run(root->left);
int lsum = run(root->left);
int rsum = run(root->right);
return (lsum<rsum) ? (lsum + 1):(rsum + 1);
}
};