16. 树
一、什么是树
树是 n(n≥0)个 结点 的有限集合,n=0 时,称为 空树,这是一种特殊的情况。在任意一颗 非空树 中应该满足以下条件:
- 有且仅有一个特定的称为 根 的结点。
- 当 n≥1 时,其余结点可分为 m(m>0)个 互不相交的有限集合 ,其中每个集合本身又是一棵树,并且称为原来树的子树。
树的一些常用术语如下:
- 结点的度:结点的子树个数。
- 树的度:树的所有结点中最大的度数。
- 叶结点:度为 0 的结点。
- 父结点:有子树的结点是其子树的根结点的父结点。
- 子结点:若 A 结点是 B 结点的父结点,则称 B 结点是 A 结点的子结点。子结点也称孩子结点。
- 兄弟结点:具有同一父结点的各节点彼此是兄弟结点。
- 路径和路径的长度:从结点 到 的路径为一个结点序列 , 是 的父结点。路径所包含边的个数为路径的长度。
- 祖先结点:沿树根到某一结点路径上的所有结点都是这个结点的祖先结点。
- 子孙结点:某一结点的子树中的所有结点是这个结点的子孙。
- 结点的层次:规定根结点在 1 层,其它任一结点的层数是其父结点的层数加 1。
- 树的深度:树中所有结点中的最大层次是这棵树的深度。
- 森林:多颗子树构成森林。
子树是不相交的;
除了根结点外,每个结点有且仅有一个父结点。
一颗 N 个结点的树有 N-1 条边。
二、树的表示
这里,我们使用 儿子兄弟表示法 表示一棵树。结点有两个指针域,一个指向它的 儿子结点,另一个指向它的 兄弟结点。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报