题意:
        
    
方法一:
递归

思路:
        如果当前节点的左儿子或右儿子是叶子节点,则返回 null 。
        否则,分别递归左儿子和右儿子。
        最后返回 root 。
        
        

class Solution {
public:
    
    TreeNode* pruneLeaves(TreeNode* root) {
        
        if(root==nullptr)
            return nullptr;
        //左儿子节点是叶子节点
        if(root->left&&root->left->left==nullptr&&root->left->right==nullptr){
            return nullptr;
        }
        //右儿子节点是叶子节点
        if(root->right&&root->right->left==nullptr&&root->right->right==nullptr){
            return nullptr;
        }
        root->left=pruneLeaves(root->left);//递归左儿子节点
        root->right=pruneLeaves(root->right);//递归右儿子节点
        return root;
    }
};


时间复杂度:
空间复杂度:


方法二:
java实现

思路:
        思路同方法一相同。

import java.util.*;


public class Solution {
    
    public TreeNode pruneLeaves (TreeNode root) {
        if(root==null){
            return null;
        }
        //左儿子是叶子节点
        if(root.left!=null&&root.left.left==null&&root.left.right==null){
            return null;
        }
        //右儿子是叶子节点
        if(root.right!=null&&root.right.left==null&&root.right.right==null){
            return null;
        }
        root.left=pruneLeaves(root.left);//递归左儿子
        root.right=pruneLeaves(root.right);//递归右儿子
        return root;
    }
}


时间复杂度:
空间复杂度: