111:Minimum Depth of Binary Tree【樹】【DFS】

題目鏈接: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;
    }
};


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章