您的位置:首页 > 其它

[Leetcode]-Minimum Depth of Binary Tree

2017-06-28 08:55 267 查看
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.

Hide Tags :Tree , Depth-first Search

题目:求取二叉树中最小深度,根节点定义为1深度。

思路:相同採取递归

递归终止条件:

     A:假设root为NULL。说明已经越界,返回深度0

推断节点走向:

     A:假设root为树叶, if(root->left == NULL && root->right == NULL) 返回深度1

     B:假设节点无左节点,即if(root->left == NULL ) ,则运行递归return minDepth(root->right) + 1;

     C:假设节点无右节点,则return minDepth(root->left ) + 1;

递归主进程:

int l = minDepth(root->left) + 1 ;

int r = minDepth(root->right)+ 1 ;

最后在推断l与r的大小,返回小者return min(l,r);

/**
* Definition for a binary tree node.
* struct TreeNode {
*     int val;
*     struct TreeNode *left;
*     struct TreeNode *right;
* };
*/
#define min(a,b) (((a)<(b))?(a):(b))
int minDepth(struct TreeNode* root) {

if(root == NULL)                                return 0;
if(root->left == NULL && root->right == NULL)   return 1;
else if(root->left == NULL )                    return minDepth(root->right) + 1;
else if(root->right== NULL )                    return minDepth(root->left ) + 1;
int l = minDepth(root->left) + 1 ;
int r = minDepth(root->right)+ 1 ;
return min(l,r);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: