树和二叉树的特点与异同

简介: 树和二叉树的特点与异同


树是一种数据结构,它是由n(n>=1)个有限结点组成一个具有层次关系的集合。

它具有以下的特点:

  1. 1.每个结点有零个或多个子结点;
  2. 2.没有父结点的结点称为根结点;
  3. 3.每一个非根结点有且只有一个父结点;
  4. 4.除了根结点外,每个子结点可以分为多个不相交的子树;

树结构是一种非线性存储结构,存储的是具有“一对多”关系的数据元素的集合。


image.png


树的关键特性和重点概念:

  • 树的层次计算规则:根结点所在的那一层记为第一层,其子结点所在的就是第二层,以此类推。
  • 结点和树的“高度”计算规则:叶子结点高度记为1,每向上一层高度就加1,逐层向上累加至目标结点时,所得到的的值就是目标结点的高度。树中结点的最大高度,称为“树的高度”。
  • “度”的概念:一个结点开叉出去多少个子树,被记为结点的“度”。比如我们上图中,根结点的“度”就是3。
  • 叶子结点:叶子结点就是度为0的结点。在上图中,最后一层的结点的度全部为0,所以这一层的结点都是叶子结点。


二叉树


二叉树是指满足以下要求的树:

树可以有多个节点,但是二叉树必须要有两个节点

  • 它可以没有根结点,作为一棵空树存在
  • 如果它不是空树,那么必须由根结点、左子树和右子树组成,且左右子树都是二叉树。如下图:


image.png


在 JS 中,二叉树使用对象来定义。它的结构分为三块:

  • 数据域
  • 左侧子结点(左子树根结点)的引用
  • 右侧子结点(右子树根结点)的引用

在定义二叉树构造函数时,我们需要把左侧子结点和右侧子结点都预置为空:

// 二叉树结点的构造函数 
function TreeNode(val) { 
    this.val = val; 
    this.left = null;
    this.right = null; 
}
// 当你需要新建一个二叉树结点时,直接调用构造函数、传入数据域的值就行了:\
const node  = new TreeNode(1)

如此便能得到一个值为 1 的二叉树结点,从结构上来说,它长这样:




以这个结点为根结点,我们可以通过给 left/right 赋值拓展其子树信息,延展出一棵二叉树。因此从更加细化的角度来看,一棵二叉树的形态实际是这样的:


image.png


了解这些基础知识,为下面二叉树的遍历做准备


目录
相关文章
|
索引
Google Earth Engine(GEE)——提取指定矢量集合中的NDVI值并附时间属性
Google Earth Engine(GEE)——提取指定矢量集合中的NDVI值并附时间属性
347 2
|
传感器 5G UED
5G 标准化进程|带你读《5G空口特性与关键技术》之二
从 2016 年起,3GPP 启动了 R14 研究项,目标是在 2020 年实现 5G 的商业化部署。为此,3GPP 采取了按阶段定义规范的方式。第一阶段目标是R15,旨在完成规范 5G 的有限功能。第二阶段是 R16,旨在完成规范 IMT-2020 所定义的所有功能,将于 2019 年年底到 2020 年完成。
5G 标准化进程|带你读《5G空口特性与关键技术》之二
|
11月前
|
算法 开发者 索引
二分算法详解
本文介绍了二分查找及其相关问题的解决方法,包括基本的二分查找、查找元素的第一个和最后一个位置、求平方根、搜索插入位置、寻找峰值和旋转数组中的最小值等问题。通过详细分析每种情况下的二分查找策略,如循环条件、区间划分及特殊情况处理,提供了清晰的代码实现。适用于算法初学者和需要巩固二分查找技巧的开发者。
407 18
二分算法详解
|
9月前
|
数据采集 机器学习/深度学习 人工智能
《智启新材:人工智能重塑分子结构设计蓝图》
在科技飞速发展的今天,新材料研发竞争激烈,人工智能(AI)以其强大的数据分析和算法能力,为分子结构设计带来革命性突破。传统方法耗时长、成功率低,而AI能快速处理海量数据,挖掘规律,构建精准模型,大幅缩短研发周期,提高成功率。无论是在药物研发还是工业材料领域,AI均展现出巨大潜力,如优化航空航天材料性能、设计新型碳纤维复合材料等。尽管面临数据质量和可解释性挑战,AI在新材料领域的前景依然广阔,正引领材料创新新时代,推动能源革命与物联网发展。
168 9
|
6月前
|
机器学习/深度学习
阿里妈妈首提AIGB并实现大规模商业化落地,将在NeurIPS 2024正式开源Benchmark
阿里妈妈提出AI-Generated Bidding(AIGB)新范式及DiffBid生成式竞价模型,突破传统基于强化学习的自动竞价方法局限。AIGB将自动竞价视为生成问题,通过捕捉复杂依赖关系,提升长期规划和随机环境中的稳定性和效果。DiffBid基于条件扩散建模,灵活生成满足特定目标的竞价轨迹,显著提升GMV和ROI。实验结果表明,DiffBid实现了2.81%的GMV增长和3.36%的ROI增长。然而,生成式建模的复杂性也带来了训练和调优的挑战。 论文链接:https://arxiv.org/abs/2405.16141
265 9
|
存储 数据管理 jenkins
自动化测试框架的搭建与实践
【8月更文挑战第3天】随着软件行业的迅猛发展,自动化测试已成为保证软件质量的重要手段。本文将介绍如何搭建一个高效的自动化测试框架,并通过实际代码示例展示其应用。我们将探讨框架设计的核心原则、工具选择和脚本编写的最佳实践,以及如何通过持续集成实现自动化测试流程的优化。
219 1
|
缓存 JavaScript 前端开发
Windows7压缩包安装node.js 报错提示windows Server 2012 R2 和安装React脚手架 最详细教程
对于Windows 7安装node.js 提示“This application is only supported on wWindows 8.1,windows Server 2012 R2, or higher.”类似这种情况的,该问题是因为node.js官方在 x12版本后就不支持win7系统了。
|
安全 算法 测试技术
什么是灰盒测试?
什么是灰盒测试?
809 1
|
数据安全/隐私保护
注销备案须知及操作步骤
若您的网站已经在阿里云成功备案,现要停止该网站的服务,需注销主体或网站在工信部的备案信息。
3453 0
|
设计模式 前端开发 JavaScript
React开发的设计模式及原则
设计模式是最常见的,通用问题的可复用解决方案的归纳总结,通常被认为是解决该类问题的最佳实践,使用设计模式能帮助我们写出更容易维护,更健壮的代码。设计模式有很多,通常它们都会遵循一些共同的设计原则,接下来我们一起回顾下React社区里出现过的一些设计模式,以及它们所遵循的设计原则。
48098 6
React开发的设计模式及原则