• 【leetcode】1261. Find Elements in a Contaminated Binary Tree


    题目如下:

    Given a binary tree with the following rules:

    1. root.val == 0
    2. If treeNode.val == x and treeNode.left != null, then treeNode.left.val == 2 * x + 1
    3. If treeNode.val == x and treeNode.right != null, then treeNode.right.val == 2 * x + 2

    Now the binary tree is contaminated, which means all treeNode.val have been changed to -1.

    You need to first recover the binary tree and then implement the FindElements class:

    • FindElements(TreeNode* root) Initializes the object with a contamined binary tree, you need to recover it first.
    • bool find(int target) Return if the target value exists in the recovered binary tree.

    Example 1:

    Input
    ["FindElements","find","find"]
    [[[-1,null,-1]],[1],[2]]
    Output
    [null,false,true]
    Explanation
    FindElements findElements = new FindElements([-1,null,-1]); 
    findElements.find(1); // return False 
    findElements.find(2); // return True 

    Example 2:

    Input
    ["FindElements","find","find","find"]
    [[[-1,-1,-1,-1,-1]],[1],[3],[5]]
    Output
    [null,true,true,false]
    Explanation
    FindElements findElements = new FindElements([-1,-1,-1,-1,-1]);
    findElements.find(1); // return True
    findElements.find(3); // return True
    findElements.find(5); // return False

    Example 3:

    Input
    ["FindElements","find","find","find","find"]
    [[[-1,null,-1,-1,null,-1]],[2],[3],[4],[5]]
    Output
    [null,true,false,false,true]
    Explanation
    FindElements findElements = new FindElements([-1,null,-1,-1,null,-1]);
    findElements.find(2); // return True
    findElements.find(3); // return False
    findElements.find(4); // return False
    findElements.find(5); // return True

    Constraints:

    • TreeNode.val == -1
    • The height of the binary tree is less than or equal to 20
    • The total number of nodes is between [1, 10^4]
    • Total calls of find() is between [1, 10^4]
    • 0 <= target <= 10^6

    解题思路:题目很简单,先把树恢复,然后判断值是否存在。

    代码如下:

    # Definition for a binary tree node.
    # class TreeNode(object):
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    
    class FindElements(object):
        dic = {}
        root = None
        def __init__(self, root):
            """
            :type root: TreeNode
            """
            self.dic = {}
            self.root = root
            def recursive(node,node_val):
                node.val = node_val
                self.dic[node.val] = 1
                if node.left != None:
                    recursive(node.left,node.val*2+1)
                if node.right != None:
                    recursive(node.right,node.val*2+2)
            recursive(self.root,0)
            
    
        def find(self, target):
            """
            :type target: int
            :rtype: bool
            """
            return target in self.dic
            
    
    
    # Your FindElements object will be instantiated and called as such:
    # obj = FindElements(root)
    # param_1 = obj.find(target)
  • 相关阅读:
    闭包的一个经典例子
    手机归属地查询API
    安卓模拟器导入通讯录
    使用RazorGenerator实现项目模块分离
    .met mvc 一种判断是否已登录的方式
    stl 空间配置器理解
    STL 生成全排列
    KMP算法理解
    解决八皇后问题,递归与非递归方式两种
    获取第K大的数
  • 原文地址:https://www.cnblogs.com/seyjs/p/11896193.html
Copyright © 2020-2023  润新知