首页 > 其他分享 >1080. 根到叶路径上的不足节点

1080. 根到叶路径上的不足节点

时间:2023-04-03 22:15:11浏览次数:35  
标签:cur 删除 1080 dfs del 根到 True 节点

题目描述

给了一个二叉树,给了不足节点的定义(所有经过该节点的从跟到叶子的路径和如果都小于limt)
需要删除所有的不足节点,返回最终的根节点

f1 分治+dfs

基本分析

  1. 从树上删除一个点,怎么操作方便?父节点删除比自己删除自己方便
  2. 以上信息给了什么启示?dfs中给父节点返回自己可以删除的信息,父节点去删除自己
  3. 如果某个节点的左右子节点都是不足节点,可以推出什么?这个节点也是不足节点(不重新计算路径值)
  4. 路径和怎么进行累加?定义s是从上往下传下去时候的路径和,最开始是0,每往下走,就会累加cur.val
  5. 为什么是后序遍历?拿到左右子节点的删除信息后,才能决定父节点是不是删除。

代码

class Solution:
    def sufficientSubset(self, root: Optional[TreeNode], limit: int) -> Optional[TreeNode]:
        def dfs(cur, s, k):
            if not cur.left and not cur.right:
                return s + cur.val < k
            
            del_l, del_r = True, True
            if cur.left:
                del_l = dfs(cur.left, s + cur.val, k)
            if cur.right:
                del_r = dfs(cur.right, s + cur.val, k)
            
            if del_l:
                cur.left = None
            if del_r:
                cur.right = None
            
            return del_l and del_r
        
        del_root = dfs(root, 0, limit)
        if del_root:
            return None
        else:
            return root

总结

  1. 怎么理解递归?将s值传递下去,再从底层的return结果判断父节点的情况。
  2. 为啥在dfs之前要把删除初值设置为True?如果没有某个子树,就没法通过dfs传参设置为True,最终没法返回真实的and的结果(True and True)

标签:cur,删除,1080,dfs,del,根到,True,节点
From: https://www.cnblogs.com/zk-icewall/p/17284618.html

相关文章

  • 019redis3.0集群删除节点
    1:如果删除的节点是主节点,这里我们删除192.168.2.20:7006节点,这个节点有1000个哈希槽首先要把节点中的哈希槽转移到其他节点中,执行下面的命令cd /usr/local/redis3.0/src./redis-trib.rb reshard 192.168.2.20:7000系统会提示我们要移动多少哈希槽,这里移动1000个,因为192.168.2.20......
  • 018redis3.0集群添加节点
    1:首先把需要添加的节点启动cd /usr/local/cluster/mkdir 7006cp /usr/local/cluster/redis.conf  /usr/local/cluster/7006/cd /usr/local/cluster/7006/vi redis.conf##修改redis.conf中的port参数的值为7006redis-server redis.conf2:执行以下命令,将这个新节点添加到集群......
  • k8s work节点重新获取token
    在master节点重新生成token命令,然后在node子节点中执行kubuadmjoin命令kubeadmtokencreate--print-join-command如果网忘了证书的秘钥,可以在master节点执行以下命令opensslx509-pubkey-in/etc/kubernetes/pki/ca.crt|opensslrsa-pubin-outformder2>/dev/null......
  • 2096. 从二叉树一个节点到另一个节点每一步的方向
    题目描述给了一个二叉树,树上所有节点的值不同再给了两个点的值表示起点和终点,问从起点到终点的最短路的方向?f1dfs预处理+最近公共祖先基本分析没有给出起点和终点是哪个点,怎么拿到?一次从root的dfss到e的最短路径是哪一条?从公共祖先分别下来的怎么从s和e求到公共祖先的pat......
  • 力扣---面试题 02.01. 移除重复节点
    编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。示例1:输入:[1,2,3,3,2,1]输出:[1,2,3]示例2:输入:[1,1,1,1,2]输出:[1,2]提示:链表长度在[0,20000]范围内。链表元素在[0,20000]范围内。进阶:如果不得使用临时缓冲区,该怎么解决?来源:力扣(LeetC......
  • 新手如何使用Tiktok加速器做跨境电商?可以加速Tiktok网络的节点分享
    TikTok是一款全球性的视频应用程序,越来越多的跨境电商企业开始在TikTok上开展业务。然而,由于地理位置和网络原因,许多跨境电商企业在使用TikTok时会遇到卡顿、延迟等问题,影响了业务的正常运营。 为了解决这些问题,许多跨境电商企业开始使用TikTok加速器。那么,新手如何使用TikTok......
  • day16| 222.完全二叉树的节点个数
    104和111题见前一天 222.完全二叉树的节点个数 题目简述:给你一棵完全二叉树的根节点root,求出该树的节点个数。完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层......
  • k8s kubernetes给node节点添加标签和删除node节点标签
    [root@k8s-master~]#hostname#查看节点名称k8s-master[root@k8s-master~]#[root@k8s-master~]#kubectlgetnodes--show-labels#查看节点标签NAMESTATUSROLESAGEVERSIONLABELSk8s-masterReadycontrol-plane9dv1.26.0......
  • 力扣608(MySQL)-树节点(中等)
    题目:给定一个表 tree,id 是树节点的编号, p_id 是它父节点的 id。 树中每个节点属于以下三种类型之一:叶子:如果这个节点没有任何孩子节点。根:如果这个节点是整棵树的根,即没有父节点。内部节点:如果这个节点既不是叶子节点也不是根节点。写一个查询语句,输出所有节点的编号......
  • CAN NM中的主动节点和被动节点、被动唤醒概念
    1.主动节点承担主动发送网络管理报文任务,一般为KL15硬线、传感器等。一个网络中可能有多个主动节点2.被动节点由其他节点发送网络管理报文唤醒,调用CanNm_PassiveStartUp函数接口。3.共同点主动节点和被动节点都可以被动唤醒。被动节点被动唤醒默认不发网络管理报文,具体看客......