其实就是删除所有叶子结点及其父节点。
1.如果为空,无可再删,返回空。
2.如果有一个孩子结点是叶结点,无论左右,父子均删,返回空。
3.如果两个孩子均不是叶子结点,左子树最终结果为递归左孩子的结果,右子树亦如此。
struct TreeNode* pruneLeaves(struct TreeNode* root ) {
    if(root == NULL)   //空空如也,无可删
        return NULL;
    //左结点是叶子结点,右结点不是叶子结点,父子均亡
    if(root->right != NULL 
        && root->right->right == NULL && root->right->left == NULL)
        return NULL;
    //左结点不是叶子结点,右结点是叶子结点,父子均亡
    if(root->left != NULL 
       && root->left->right == NULL && root->left->left == NULL)
        return NULL;
    //左右都不是叶子结点时
    //左子树的最终结果要递归左孩子结点,右子树亦如此
    root->left = pruneLeaves(root->left); 
    root->right = pruneLeaves(root->right);
    return root;
}