題目鏈接:click~
/*題意:求二叉樹的最小深度(從根結點到最近的葉子結點)*/
/**
*思路:DFS遍歷整個樹,只需要葉子結點的到根的距離
*
*/
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 LeftDepth = minDepth(root->left); //左子樹的最小深度
int RightDepth = minDepth(root->right);//右子樹的最小深度
if(LeftDepth == 0) //非葉子結點且左子樹爲空
return RightDepth + 1;
else if(RightDepth == 0) //非葉子結點且右子樹爲空
return LeftDepth + 1;
else
return min(LeftDepth, RightDepth) + 1;
}
};