跳转至

树的概念

引入

图论中的树跟在现实生活中的树长得很像,不过我们平常一般习惯处理问题的时候把树根放到最上面。树也跟图一样,是由若干个节点和边所组成的。

定义

什么是树

树是一种特殊的图,是一个拥有 \(n\) 个节点和 \(n-1\) 条边的无向无环连通图。与普通的图不同,树的每一个节点最多只能有一个前继节点。如果制定了一个“根”,就是一棵有根树;若没有指定固定的根,那么就是一颗无根树。

树的定义

  • 森林:每一个联通块 / 联通分量都是树的图就叫做森林。虽然有点离谱,但是一棵树其实也是森林。
  • 父结点 / 父亲:一个结点上面的最近的结点,并且和这个结点连上了一条边。
  • 祖先:一个结点到根结点的路径上面,除了他自己,其他的结点都是他的祖先。
  • 子结点 / 儿子:如果 \(a\)\(b\) 的父亲,那么 \(b\)\(a\) 的子结点。每一个结点最多只能有一个父亲,但是可以有多个儿子。
  • 兄弟:一个结点的多个儿子之间互相为兄弟。
  • 后代:与祖先正好相反,若 \(a\)\(b\) 的祖先,那么 \(b\)\(a\) 的后代。
  • 叶子结点:当一个结点没有任何儿子的时候,这个结点就是一个叶子结点。
  • 结点深度:根结点到当前结点的路径经过的边的数量。
  • 树的高度:在树当中所有结点的深度最大值。

特殊的树

  • 链:当一棵树当中所有结点最多只有一个儿子的时候,因为形状很像链表,因此称作一条链。
  • 菊花:有一个结点连接了其他所有结点,这棵树就叫做菊花。

二叉树

定义

二叉树是一种特殊的树,对于任意一个结点,最多只有两个儿子。二叉树当中结点的儿子是区分顺序的,分为左儿子和右儿子。

特殊的二叉树

  • 完整二叉树:任意一个不为叶子结点的结点,必须要有正好两个儿子。
  • 满二叉树:所有叶子结点的深度都一样,并且不为叶子结点的任意结点都需要有正好两个儿子。
  • 完全二叉树:只有最下面两层的结点可以为空,其他结点都和满二叉树的位置一样。

评论