leetcode 1361. 验证二叉树

二叉树上有 n 个节点,按从 0 到 n - 1 编号,其中节点 i 的两个子节点分别是 leftChild[i] 和 rightChild[i]

只有 所有 节点能够形成且  形成 一颗 有效的二叉树时,返回 true;否则返回 false

如果节点 i 没有左子节点,那么 leftChild[i] 就等于 -1。右子节点也符合该规则。

注意:节点没有值,本问题中仅仅使用节点编号。


输入:n = 4, leftChild = [1,-1,3,-1], rightChild = [2,-1,-1,-1]
输出:true
/*** @param {number} n* @param {number[]} leftChild* @param {number[]} rightChild* @return {boolean}*/
var validateBinaryTreeNodes = function (n, leftChild, rightChild) {//统计边数let edges = 0;//统计入度let nodeIn = new Array(n).fill(0);//统计出度let nodeOut = new Array(n).fill(0);for (let i = 0; i < n; i++) {if (leftChild[i] !== -1) {nodeIn[leftChild[i]]++;nodeOut[i]++;edges++;}if (rightChild[i] !== -1) {nodeIn[rightChild[i]]++;nodeOut[i]++;edges++;}};//如果不满足n个结点仅有n-1条边,那么说明该图不是二叉树。if (edges !== n - 1) {return false;}/*** 拓扑排序,判断图是否有环* 求出图中所有结点的出入度。* 将所有入度 === 0 的结点入队。* 当队列不空时,弹出队首元素,把与队首元素的左右子节点的入度减一。* 如果存在某个子节点的入度变为0,则将该结点入队。* 循环结束时判断已经访问的结点数,全部访问说明,图无环;存在没有访问到的结点,则有环。*/let queue = [];let visited = new Array(n).fill(false);for (let i = 0; i < nodeIn.length; i++) {if (nodeIn[i] === 0)queue.push(i);}while (queue.length) {let node = queue.shift();visited[node] = true;if (leftChild[node] !== -1 && nodeIn[leftChild[node]] === 1) {nodeIn[leftChild[node]]--;queue.push(leftChild[node]);}if (rightChild[node] !== -1 && nodeIn[rightChild[node]] == 1) {nodeIn[rightChild[node]]--;queue.push(rightChild[node]);}}// 判断是否全部访问for (let i = 0; i < n; i++) {if (visited[i] === false)return false;}return true
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1546978.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【Ubuntu】Ubuntu安装编译C/C++环境简易版教程

环境 操作系统&#xff1a;ubuntu-22.04.4-desktop-amd64.iso 安装 第一步:更新软件包列表&#xff0c;检查可用的软件包更新 sudo apt update在这一步&#xff0c;我们可以确保系统中的软件包列表是最新的&#xff0c;以便后续的软件包管理操作。 第二步&#xff1a;安装…

​​XrayGLM原理与部署

接上一篇&#xff1a;VisualGLM-6B——原理与部署-CSDN博客 XrayGLM技术背景与原理 XrayGLM 是一种基于 VisualGLM-6B 微调开发的多模态医学影像诊断模型&#xff0c;专门用于处理医学影像&#xff08;如 X 光胸片&#xff09;的自动诊断和报告生成任务。该模型旨在为中文医学…

归并排序,外排序,计数排序(非比较排序)

归并排序&#xff1a;&#xff08;MERGE-SORT&#xff09;是建立在归并操作上的一种有效的排序算法,该算法是采用分治法&#xff08;Divide and Conquer&#xff09;的一个非常典型的应用。将已有序的子序列合并&#xff0c;得到完全有序的序列&#xff1b;即先使每个子序列有序…

智能软件开启精准品牌控价

在当今竞争激烈的商业世界中&#xff0c;品牌的价值如同璀璨的明珠&#xff0c;需要精心呵护。而价格管控&#xff0c;则是守护这颗明珠的关键防线。 当面对众多的产品和 SKU 时&#xff0c;传统的人力监测已显得力不从心。此时&#xff0c;力维网络自主开发的数据监测系统如同…

Redis 篇-深入了解在 Linux 的 Redis 网络模型结构及其流程(阻塞 IO、非阻塞 IO、IO 多路复用、异步 IO、信号驱动 IO)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 用户空间与内核空间概述 2.0 Redis 网络模型 2.1 Redis 网络模型 - 阻塞 IO 2.2 Redis 网络模型 - 非阻塞 IO 2.3 Redis 网络模型 - IO 多路复用 2.3.1 IO 多路复…

如何守护变美神器安全?红外热像仪:放开那根美发棒让我来!

随着智能家电市场的迅速发展&#xff0c;制造商们越来越关注生产过程中效率和质量的提升。如何守护变美神器安全&#xff1f;红外热像仪&#xff1a;放开那根卷发棒让我来&#xff01; 美发棒生产遇到什么困境&#xff1f; 美发棒生产过程中会出现设备加热不均情况&#xff0c…

图片该怎么转二维码展示?轻松将图片做成二维码的方法

随着现在互联网的不断发展&#xff0c;在日常生活中很多场景下会选择用二维码来展示信息或其他内容&#xff0c;让图片、文本、音视频、文件以及其他内容展示更加便捷&#xff0c;有效提升用户获取内容的效率。那么怎么用二维码来提供图片预览呢&#xff1f; 大家可以学习下面…

太速科技-389-基于KU5P的双路100G光纤网络加速计算卡

基于KU5P的双路100G光纤网络加速计算卡 一、板卡概述 基于Xilinx UltraScale16 nm KU5P芯片方案基础上研发的一款双口100 G FPGA光纤以太网PCI-Express v3.0 x8智能加速计算卡&#xff0c;该智能卡拥有高吞吐量、低延时的网络处理能力以及辅助CPU进行网络功能卸载的能力…

黑盒测试与白盒测试总结

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 黑盒测试与白盒测试是软件测试中两种不同的测试方法&#xff0c;它们的主要区别在于测试者对被测试软件的了解程度。下面&#xff0c;我们将详细介绍这两种测试方…

华为申请鸿蒙甄选、鸿蒙优选商标,加词的注意!

近日华为在35类广告销售上申请鸿蒙智选、鸿蒙优选、鸿蒙精品&#xff0c;鸿蒙甄选等商标&#xff0c;后面所加的词智选、优选、精品、甄选等基本上是属于通用词。 这样在35类拿到鸿蒙通用词商标&#xff0c;需要先拿到“鸿蒙“商标&#xff0c;经普推知产商标老杨检索发现&…

001. OBS (obs-studio)

1. 下载 https://obsproject.com/download windows c 插件下载 https://obsproject.com/visual-studio-2022-runtimes 2. 操作步骤 https://renwen.shnu.edu.cn/_s40/9a/2c/c28309a760364/page.psp https://zhuanlan.zhihu.com/p/597231652

智慧公厕:引领公共卫生新潮流@卓振思众

随着科技的不断进步&#xff0c;智慧公厕应运而生&#xff0c;为人们带来了全新的如厕体验。作为智慧公厕厂家&#xff0c;我们致力于打造更加舒适、便捷、环保的公共厕所。智慧公厕究竟有哪些神奇之处呢&#xff1f;让我们一起来揭开它的神秘面纱。【卓振思众】 一、环境监测&…

【FPGA必知必会】(二)7系列的配置(三)多FPGA配置

在一些复杂的应用中&#xff0c;会在同一张板卡上使用多个FPGA设备&#xff0c;如果每个FPGA都引出一组JTAG管脚&#xff0c;无疑增加了板卡的布局密度。 Xilinx提供了一种解决方案&#xff0c;可以使用同一个配置源来配置所有的FPGA设备。 如果多个FPGA使用相同的配置文件&a…

Linux 文件目录结构(详细)

一、基本介绍 Linux的文件系统是采用级层式的树状目录结构&#xff0c;在此结构中的最上层是根目录“/”&#xff0c;然后在此目录下再创建其他的目录。 Linux世界中&#xff0c;一切皆文件&#xff01; 二、相关目录 /bin[常用](/usr/bin、/usr/local/bin) 是Binary的缩写,…

监测打鼾app

监测打鼾app,在现代生活中&#xff0c;打鼾不仅是一个常见的夜间问题&#xff0c;它对健康的隐患也越来越被人们所重视。随着科技的进步&#xff0c;监测打鼾的应用程序如雨后春笋般涌现&#xff0c;为改善睡眠质量提供了新的希望。其中&#xff0c;流静&#xff08;LiuJing&am…

信息,就是位+上下文什么是文本文件和二进制文件

信息&#xff0c;就是位上下文 计算机系统是由硬件和软件系统组成的&#xff0c;它们共同工作来运行应用程序 hello.c #include <stdio.h>int main(){printf("Hello World~");return 0; }hello程序的生命周期是从一个源程序&#xff08;或者说源文件&#xf…

【高阶数据结构】平衡二叉树(AVL)的删除和调整

&#x1f921;博客主页&#xff1a;醉竺 &#x1f970;本文专栏&#xff1a;《高阶数据结构》 &#x1f63b;欢迎关注&#xff1a;感谢大家的点赞评论关注&#xff0c;祝您学有所成&#xff01; ✨✨&#x1f49c;&#x1f49b;想要学习更多《高阶数据结构》点击专栏链接查看&a…

《数据结构与算法之美》学习笔记五之队列

前情提要&#xff1a;上一章学习了栈相关的知识&#xff0c;主要有下面的内容&#xff1a; 栈操作的时间复杂度&#xff0c;对于顺序栈&#xff0c;入栈时如果栈的空间不够涉及到数据搬移&#xff0c;此时使用摊还分析法&#xff0c;将数据搬移的耗时均摊到不需要搬移数据的入…

django开发流程1

一、官方网站&#xff1a; Django documentation | Django documentation | Djangohttps://docs.djangoproject.com/en/5.1/ 1.安装 django : pip install django 2. django项目的配置文件 (settings.py) BASE_DIR 项目根路径 DEBUG 调试模式 INSTALLE…

DC00018基于java swing+MySQL花卉信息管理系统

1、项目功能演示 DC00018基于java swingMySQL花卉信息管理系统java项目信息管理系统 2、项目功能描述 基于java swingMySQL花卉信息管理系统 系统包括用户信息管理以及花卉信息管理等功能。 3、项目运行截图 4、项目核心代码 4.1 日期格式化 package utils;import java.t…