题意:
方法一:
递归
思路:如果当前节点的左儿子或右儿子是叶子节点,则返回 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;
}
}
时间复杂度:
空间复杂度:![]()



京公网安备 11010502036488号