• 【leetcode】1325. Delete Leaves With a Given Value


    题目如下:

    Given a binary tree root and an integer target, delete all the leaf nodes with value target.

    Note that once you delete a leaf node with value target, if it's parent node becomes a leaf node and has the value target, it should also be deleted (you need to continue doing that until you can't).

    Example 1:

    Input: root = [1,2,3,2,null,2,4], target = 2
    Output: [1,null,3,null,4]
    Explanation: Leaf nodes in green with value (target = 2) are removed (Picture in left). 
    After removing, new nodes become leaf nodes with value (target = 2) (Picture in center).
    

    Example 2:

    Input: root = [1,3,3,3,2], target = 3
    Output: [1,3,null,null,2]
    

    Example 3:

    Input: root = [1,2,null,2,null,2], target = 2
    Output: [1]
    Explanation: Leaf nodes in green with value (target = 2) are removed at each step.
    

    Example 4:

    Input: root = [1,1,1], target = 1
    Output: []
    

    Example 5:

    Input: root = [1,2,3], target = 1
    Output: [1,2,3]

    Constraints:

    • 1 <= target <= 1000
    • Each tree has at most 3000 nodes.
    • Each node's value is between [1, 1000].

    解题思路:最直接的方法就是循环做删除特定值的叶子节点的操作,只能没有符合条件的叶子节点为止。

    代码如下:

    # Definition for a binary tree node.
    # class TreeNode(object):
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    
    class Solution(object):
        def recursive(self,node,parent,target,direction):
            if node.left is None and node.right is None and node.val == target:
                self.flag = True
                if direction == 'L':
                    parent.left = None
                else:
                    parent.right = None
            if node.left != None:
                self.recursive(node.left,node,target,'L')
    
            if node.right != None:
                self.recursive(node.right,node,target,'R')
    
    
    
        def removeLeafNodes(self, root, target):
            """
            :type root: TreeNode
            :type target: int
            :rtype: TreeNode
            """
            while True:
                self.flag = False
                if root.left == None and root.right == None and root.val == target:
                    return None
                node = root
                self.recursive(node,None,target,'')
                if self.flag == False:
                    break
            return root
            
  • 相关阅读:
    celery定时器
    基于Django的Rest Framework框架的视图组件
    Django的缓存机制
    Django中的跨域请求问题
    基于Django的Rest Framework框架的url控制器
    基于Django的Rest Framework框架的响应器
    基于Django的Rest Framework框架的分页组件
    基于Django的Rest Framework框架的解析器
    虚拟机下CentOS7开启SSH连接
    Vue中computed和watch的区别
  • 原文地址:https://www.cnblogs.com/seyjs/p/12217994.html
Copyright © 2020-2023  润新知