数据结构中的树和前面的线性表有所不同,它属于一种非线性的结构,由N个(N>=0)有限节点组成的具有层次关系的集合,这种结构看起来很像一棵倒挂着的树,也就是树根在上,树叶朝下,所以把它叫做树。
通过观察我们可以发现树这种结构具有以下几个特点:
- 每个节点有0个或多个子节点。
- 非根节点有且只有一个父节点。
- 没有父节点的节点叫做根节点
- 除了整棵树的根节点外,每个子节点又可以分为多个不相交的子树
树的一些概念:
- 一个节点含有的子树的个数就叫做节点的度,如上图A的度就为6
- 一棵树中,最大的节点的度叫做这整棵树的度,如上图这颗树的度就是6
- 度为0的节点叫做叶子节点,或者终端节点,也就是当前这个节点没有子树了,如上图的P,Q等
- 若一个节点含有子节点,则这个节点就叫做它的子节点的父节点或者双亲节点
- 一个节点含有的子树的根节点就叫做该节点的子节点或孩子节点
- 没有父节点的节点叫做根节点
- 从整棵树的根节点开始定义,根节点为第一次,根的子节点为第二层,以此类推。
- 树种节点的最大层次叫做树的高度。
树的表现形式:
class Node {
int val;
Node chid;
Node brother;
其中,val表示当前节点的数据域,child表