zoukankan      html  css  js  c++  java
  • 【leetcode】1361. Validate Binary Tree Nodes

    题目如下:

    You have n binary tree nodes numbered from 0 to n - 1 where node i has two children leftChild[i] and rightChild[i], return true if and only if all the given nodes form exactly one valid binary tree.

    If node i has no left child then leftChild[i] will equal -1, similarly for the right child.

    Note that the nodes have no values and that we only use the node numbers in this problem.

    Example 1:

    Input: n = 4, leftChild = [1,-1,3,-1], rightChild = [2,-1,-1,-1]
    Output: true
    

    Example 2:

    Input: n = 4, leftChild = [1,-1,3,-1], rightChild = [2,3,-1,-1]
    Output: false
    

    Example 3:

    Input: n = 2, leftChild = [1,0], rightChild = [-1,-1]
    Output: false
    

    Example 4:

    Input: n = 6, leftChild = [1,-1,-1,4,-1,-1], rightChild = [2,-1,-1,5,-1,-1]
    Output: false

    Constraints:

    • 1 <= n <= 10^4
    • leftChild.length == rightChild.length == n
    • -1 <= leftChild[i], rightChild[i] <= n - 1

    解题思路:根据leftChild和rightChild的值模拟树的遍历,并记录遍历过的节点,最后判断节点数是否等于n。

    代码如下:

    class Solution(object):
        def validateBinaryTreeNodes(self, n, leftChild, rightChild):
            """
            :type n: int
            :type leftChild: List[int]
            :type rightChild: List[int]
            :rtype: bool
            """
            dic = {}
            
            queue = [0]
            while len(queue) > 0:
                node = queue.pop(0)
                if node in dic:
                    return False
                dic[node] = 1
                if leftChild[node] != -1:
                    queue.append(leftChild[node] )
                if rightChild[node] != -1:
                    queue.append(rightChild[node] )
            return len(dic) == n
  • 相关阅读:
    golang中,new和make的区别
    k8s客户端库
    k8s 拉取私有镜像
    kubernetes-client / python
    k8s集群外go客户端示例
    K8s获取NodePort
    KUBERNETES中的服务发现机制与方式
    Rancher容器目录持久化
    rancher k8s 实现pod弹性伸缩
    在Terminal里,使用Shift+Insert来代替鼠标右键来进行粘贴操作
  • 原文地址:https://www.cnblogs.com/seyjs/p/12389868.html
Copyright © 2011-2022 走看看