zoukankan      html  css  js  c++  java
  • leetcode1361

     1 class TreeNode:
     2     def __init__(self, x):
     3         self.val = x
     4         self.left = None
     5         self.right = None
     6         
     7 class Solution:
     8     def __init__(self):
     9         self.nodelist = set()
    10         self.result = True
    11 
    12     def preVisite(self,node):
    13         if node != None:
    14             if node.val not in self.nodelist:
    15                 self.nodelist.add(node.val)
    16                 self.preVisite(node.left)
    17                 self.preVisite(node.right)
    18             else:
    19                 self.result = False
    20 
    21     def validateBinaryTreeNodes(self, n: int, leftChild: 'List[int]', rightChild: 'List[int]') -> bool:
    22         trees = []
    23         for i in range(n):
    24             temp = TreeNode(-1)
    25             trees.append(temp)
    26         for i in range(n):
    27             left_val = leftChild[i]
    28             right_val = rightChild[i]
    29             if left_val != -1:
    30                 left = trees[left_val]
    31                 left.val = left_val
    32                 trees[i].left = left
    33             if right_val != -1:
    34                 right = trees[right_val]
    35                 right.val = right_val
    36                 trees[i].right = right
    37         self.preVisite(trees[0])
    38         inOneTree = len(self.nodelist) == n
    39         return self.result and inOneTree

    算法思路:二叉树的建立和遍历。

    先使用左右子树的列表建立二叉树。

    然后再对0号二叉树进行遍历,记录访问过的节点,

    1)如果遇到之前已经访问过的节点,说明不符合二叉树。

    2)如果遍历0号树后,访问的节点数量少于n,说明不只一棵二叉树。

    这两种情况,都不出现,则返回True。

  • 相关阅读:
    操作系统简介
    计算机硬件知识整理
    使用 Docker LNMP 部署 PHP 运行环境
    Chart.js 动态图表的使用
    手把手教你使用 GitBook
    手把手教你发布自己的 Composer 包
    PHP 基础篇
    macOS 上安装 PECL
    Yii2 教程
    PHP 基础篇
  • 原文地址:https://www.cnblogs.com/asenyang/p/12350354.html
Copyright © 2011-2022 走看看