[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
node1
node2
node3
node4
node5

在这个树中:

  • 根结点(root node)root

  • node1node2root 的子结点

  • node1node3node4 的父节点

  • node3node4 是兄弟结点

  • node3node4node5 是叶结点

  • rootnode3node4node5 的祖先结点

树的其他属性

这里也都是一些定义类的内容:

  • 子树(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

[JavaScript 刷题] 树 - 验证二叉搜索树, leetcode 98

[JavaScript 刷题] 树 - leetcode 235 & 236