您的位置:首页 > 其它

LeetCode Minimum Depth of Binary Tree

2014-08-12 22:06 351 查看
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.

注意求最小深度必须是到叶子节点的

/**
* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int minDepth(TreeNode *root) {
if (root == NULL)
return 0;
return depth(root);
}

int depth(TreeNode *head) {
if (head->left == NULL && head->right == NULL)
return 1;
else if (head->left != NULL && head->right != NULL){
int ldep, rdep;
ldep = depth(head->left);
rdep = depth(head->right);
return (ldep < rdep) ? (ldep + 1) : (rdep + 1);
}
else {
return 1 + (head->left ? depth(head->left) : depth(head->right));
}
}
};

可以简化为

/**
* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int minDepth(TreeNode *root) {
if (root == NULL)
return 0;
if (root->left == NULL && root->right == NULL)
return 1;

int ldep, rdep;
ldep = minDepth(root->left);
rdep = minDepth(root->right);

if (ldep == 0)
return rdep + 1;
else if (rdep == 0)
return ldep + 1;
else
return (ldep < rdep) ? (ldep + 1) : (rdep + 1);
}

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