注意递归的边界为“节点为叶节点”,否则就会过不了。

/**
 * struct TreeNode {
 *    int val;
 *    struct TreeNode *left;
 *    struct TreeNode *right;
 * };
 */
class Solution {
public:
    /**
     * 
     * @param root TreeNode类 
     * @return int整型
     */
    int run(TreeNode* root) {
        // write code here
        // 后序遍历
        if (root == nullptr){
            return 0;
        }
        int minDepth = postOrder(root);
        return minDepth;
    }
    int postOrder(TreeNode* root){
        // 注意判断是不是叶子节点
        int leftDepth = 0;
        int rightDepth = 0;
        if(root->left == nullptr && root->right == nullptr){
            return 1;
        }
        if(root->left != nullptr && root->right != nullptr){
            leftDepth = postOrder(root->left) + 1;
            rightDepth = postOrder(root->right) + 1;
            return leftDepth > rightDepth ? rightDepth : leftDepth;
        }
        if(root->right != nullptr){
            return postOrder(root->right) + 1;
        }
        return postOrder(root->left) + 1;
    }
};