/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
int minDepth(struct TreeNode *root){
//输入的是空树返回最小深度为0
if(root == NULL){
return 0;
}
//输入的是叶子节点返回最小深度为1
if(root->left == NULL && root->right == NULL){
return 1;
}
int min_depth = INT_MAX;//这个变量用于比较左节点和右节点的深度谁更小,故先给它赋一个尽量大的值来初始化
//递归遍历二叉树
//找到左节点的深度
if(root->left != NULL){
min_depth = fmin(minDepth(root->left), min_depth);
}
//找到右节点的深度,并和左节点深度比较谁小(如果有左节点非空的话)
if(root->right != NULL){
min_depth = fmin(minDepth(root->right), min_depth);
}
//返回子节点的最小深度+自己所占的一个深度
return min_depth + 1;
}
每日一练——二叉树的最小深度
于 2024-05-22 22:15:31 首次发布