[JavaScript 刷题] 数据结构 - 树(tree)
Posted GoldenaArcher
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[JavaScript 刷题] 数据结构 - 树(tree)相关的知识,希望对你有一定的参考价值。
[javascript 刷题] 数据结构 - 树(tree) 🌴
树由 结点(nodex/vetrices) 与 边(edge) 相连接,具有 分支结构 与 层次 的数据类型。
树是一种特殊的、不存在闭环的 图(graph),每两个树的 结点 由一条 边 组成,并且 边 不存在方向。常见树的类型有:
- 二叉树 ❗️
- 二叉搜索树 ❗️
- AVL 树
- 红黑树
- 2-3 树
- …
本篇主要就是一些定义类的内容。
树的主要属性
树具有以下几个特性:
-
根结点(root node)
没有父节点的结点,其他的结点都由 根结点(root node) 衍生而来。
-
子结点(child node)
与 上级结点(parent node) 相关联的结点
-
父结点(parent node)
与一或多个 下级结点(child node) 相关联的结点
-
兄弟结点(sibling node)
共享同一个 父结点(parent node) 的结点
-
叶结点(leaf node)
没有 子结点(child node) 的结点
-
祖先结点(ancestor noedes)
该节点 父辈的父辈
在这个树中:
-
根结点(root node) 为
root
-
node1
和node2
是root
的子结点 -
node1
是node3
和node4
的父节点 -
node3
和node4
是兄弟结点 -
node3
,node4
,node5
是叶结点 -
root
是node3
,node4
,node5
的祖先结点
树的其他属性
这里也都是一些定义类的内容:
-
子树(sub tree)
对于一个非 叶结点,与该后代结点的总体称呼。以上面的图为例,
node1
及其后代节点就是这棵树的子树。图像资料来源于: https://zhu45.org/posts/2017/Jan/24/tree-terminology/
-
结点的度(degree of a node)
该结点所有所有子结点的数量
-
路径长度(length of path)
一条路径所有的边
-
层级(level)
由结点形成的层级关系,其中,根节点的层级从 1 开始,由此类推:
图像资料来源于: https://zhu45.org/posts/2017/Jan/24/tree-terminology/
-
结点的深度(depth of a node)
由结点 n n n 到根节点路径的长度,根结点的深度从 0 开始计算,通常情况下: l e v e l o f a n o d e = d e g r e e o f n o d e + 1 level of a node = degree of node + 1 levelofanode=degreeofnode+1
-
结点的高度(Height of a node)
从结点 n n n 到其最深的子节点的长度。
树本身的高度,就是从 根结点 的高度,叶结点的高度永远为 0。
-
树的高度(Height of a node)
根结点 的高度
以上是关于[JavaScript 刷题] 数据结构 - 树(tree)的主要内容,如果未能解决你的问题,请参考以下文章
[JavaScript 刷题] 树 - 实现前缀树, leetcode 208
[JavaScript 刷题] 树 - 实现前缀树, leetcode 208
[JavaScript 刷题] 树 - 二叉搜索树迭代器, leetcode 173
[JavaScript 刷题] 树 - 二叉搜索树迭代器, leetcode 173