为什么需要树这种数据结构?
数组存储方式:增删效率慢
链式存储方式:改查效率慢
树能提高数据存储,读取的效率,很多的集合的底层就是用的树
树的基本概念
树是数据元素间具有层次关系的非线性结构,是由n个结点构成的有限集合,结点数为0的树叫空树。一个非空树有且仅有一个根结点,其余结点可以分为m个不相交的有限集合,每个集合又构成一棵树,叫根结点的子树。树具有“一对多”的逻辑对应关系。
树的术语
- 结点:构成树的基本单位(A/BC/D/E/F…)
- 根节点root:最上层没有父节点的节点,如A
- 父节点:有子节点的节点被称为父节点,如A是B/C的父节点,B是D/E的父节点
- 子节点:如B/C是A的子节点,F/G是C的子节点
- 叶子节点:没有子节点的节点,如HEFG
- 节点的权(节点值)如节点F里有一个编号1,那编号1就是节点F的值
- 路径:从root节点找到改节点的路线,如找D节点A=》B=》D这个路线就是路径
- 层:树的层,如F/G是第三层、H是第四层
- 子树:如虚线三角形,D是作为根的子树
- 树的高度:最大层树如上图是4
- 森林:多颗子树构成的森林
二叉树的概念
前序后续中序遍历二叉树
先输出父节点是前序遍历最后输出是后序遍历中间输出是中序遍历