题解 | #修剪叶子#

修剪叶子

http://www.nowcoder.com/practice/39b559fb84864bde93eccd6e87312650

题意:
        
    
方法一:
递归

思路:
        如果当前节点的左儿子或右儿子是叶子节点,则返回 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;
    }
}


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






全部评论

相关推荐

讲原则的小黄鸭不愿吃...:有时候面试眼缘确实很重要,当然,飞驰人生2中张弛说的很对:我努力了无数次,但是我知道机会只会出现在其中一两次。你把每一次笔试面试都全力以赴,总有你运气发挥到位的时候
点赞 评论 收藏
分享
04-28 10:14
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务