freeCodeCamp/guide/chinese/computer-science/data-structures/trees/index.md

2.3 KiB
Raw Blame History

title localeTitle
Trees

树数据结构可以递归(本地)定义为节点集合(从根节点开始),其中每个节点是由值组成的数据结构,以及对节点的引用列表(“子节点”) ,没有引用重复的约束,没有指向根。没有节点的树称为空树或空树。

二叉树是由节点组成的非线性数据结构其中每个节点具有以下3个组件

数据元素 :在节点中存储任何类型的数据 左指针 指向节点左侧的子树 右指针 指向节点右侧的子树 顾名思义,数据元素在节点中存储任何类型的数据。 左右指针分别指向节点左侧和右侧的二叉树。

如果树为空,则由空指针表示。

树木中使用的术语:

树中的顶级节点。

孩子 远离Root时直接连接到另一个节点的节点。

家长 孩子的相反观念。

兄弟姐妹 一组具有相同父节点的节点。

后裔 通过从父到子重复进行的节点。

祖先 通过从子节点到父节点重复进行的节点。

分支 (内部节点): 具有子节点的树的节点。

Leaf (不常称为外部节点): 没有子节点的节点。

学位 节点的子树数。

边缘 一个节点与另一个节点之间的连接。

路径 连接节点和后代的节点和边的序列。

等级 节点的级别由1 +(节点和根之间的连接数)定义。

树的高度 树的高度是其根节点的高度。

深度 节点的深度是从树的根节点到节点的边数。

森林 森林是一组n≥0个不相交的树。

一些流行的树木类型:

  • 二叉树
  • 二叉搜索树
  • AVL树
  • 红黑树
  • Splay树
  • 霍夫曼树

常见用途

  • 表示分层数据
  • 以易于搜索的方式存储数据
  • 表示已排序的数据列表
  • 路由算法

树节点的代码

```c_cpp 结节点 { int数据; //数据元素 struct node * left; //指向左侧节点的指针 struct node * right; //指向右边节点的指针 };

```

更多信息: