树是什么?
一种用于表示具有树状结构性质的数据结构。
树的应用
操作系统中的文件目录,D盘是根、Android是D的子节点、sdk是Android的子节点
公司的组织结构图
家族的族谱
树长啥样?
树和图什么关系?
树不包含回路,任意两点之间只有一条路径,树是一个不包含回路的无向图。
下面就是包含回路的图,而不是树。
树
- 任意两点之间只有一条路径
- 一棵树如果有n个节点,那么其恰好有n-1条边
- 在一棵树中加一条边会构成回路
- 没有父节点的节点称为根节点,前面第二张图中的1,就是根节点
- 每个非根节点有且只有一个父节点
术语
- 根节点:一棵树有且只有一个根节点,在树的最顶部(我称之为大BOSS,通常是公司中的老大、族谱中的祖先)。1就是根节点。
- 父节点:在其下方拥有直属的节点。如上图中的2,拥有4和5这两个直属的节点,4和5被称为子节点,2是父节点。
- 子节点:在其上方拥有直属的节点。4和5就是2的子节点。
- 节点的层次:根节点为第一层、往下推。2、3为第二层;4、5为第三层。
- 树的深度:节点的最大层次。此处节点的最大层次是3,所以树的深度是3。
- 叶节点:没有直属子节点的节点。如4、5。
- 内部节点:不是根节点,其拥有父节点、也拥有子节点。我称之为夹在中间的奥利奥。如2号节点就是内部节点。
参考:https://zh.wikipedia.org/wiki/%E6%A0%91_(%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84)
二叉树
二叉树是指,其任意一个节点,