寻找树的最小路径长度
方法1:深搜
const int Max=1000000;
class Solution {
public:
void DFS(TreeNode* root,int depth,int &min)
{
if(root==NULL)
return;
if(root->left==NULL&&root->right==NULL)
{
depth++;
if(min>depth)
min=depth;
return;
}
depth++;
DFS(root->left,depth,min);
DFS(root->right, depth, min);
}
int minDepth(TreeNode* root) {
if(root==NULL)
return 0;
int min=Max;
int depth=0;
DFS(root,depth,min);
return min;
}
};
方法2:分治
class Solution {
public:
int minDepth(TreeNode* root) {
if(!root)
return 0;
if(!root->left)
return minDepth(root->right)+1;
if(!root->right)
return minDepth(root->left)+1;
int l=minDepth(root->left);
int r=minDepth(root->right);
return min(l,r)+1;
}
};