树是一种数据结构,它是由n(n≥0)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。
一、特点
1、每个节点有0个和多个子节点。
2、没有父节点的节点称为根节点。
3、每一个非根节点只有一个父节点。
4、除根节点外,每个子节点可以分为多个不相交的子树。
二、定义与构成
树是包含 n 个节点,其中 n>=0,当 n=0 时称为空树,非空树中 n-1 条边的有穷集;在非空树中:
1、每个元素称为节点(node)。
2、有且只有一个特定的节点称为根节点或树根(root)。
3、除根节点之外的其余数据元素被分为 m(m >= 0) 个互不相交的集合, 其中每一个集合本身也是一棵树,被称作原树的子树。
节点的度: 一个节点含有子节点的个数称为该节点的度。
叶节点或终端节点:度为0的节点称为叶节点。
非终端节点或分支节点:度不为0的节点即非叶节点。
双亲节点或父节点:一个节点有若干个子节点,则这个节点被称为它们的父节点。
兄弟节点:父节点相同的节点。
树的度:一棵树中,最大节点的度称为树的度。
节点的层次:从根节点其,根为第一层,根的子节点为第2层,以此类推。
树的高度或深度:树中节点的最大层次。
堂兄弟节点:父节点在同一层的节点互为堂节点。
节点的先祖:从根节点所经分支上的所有节点。
子孙:以某节点为根的子树中的任一节点都是该节点的子孙。
深林:由m(m >= 0)棵互不相交的树的集合称为森林。
三、树的种类
无序树:树中任意节点的子节点之间没有顺序关系,这种树被称为无序树或自由树。
有序树:树中任意节点的子节点之间有顺序关系,这种树被称为有序树。
二叉树:每个节点最多包含两个子树的树称为二叉树。
(1)若二叉树的层次从0开始,则在二叉树的第i层至多有2^i个结点(i>=0)。
(2)高度为k的二叉树最多有2^(k+1) - 1个结点(k>=-1)。 (空树的高度为-1)
(3)对任何一棵二叉树,如果其叶子结点(度为0)数为m, 度为2的结点数为n, 则m = n + 1。
满二叉树:叶节点除外的所有节点均含有两个子树的树称为满二叉树或完美二叉树。
一个深度为k(>=-1)且有2^(k+1) - 1个结点
完全二叉树:除最后一层外,所有层都是满节点,最后一层可以不完全填充,其叶子结点都靠左对齐,这种树被称为完全二叉树。
完满二叉树:所有非叶节点的度都是2(只要你有孩子,你就必然是有两个孩子。)
四、遍历表达
遍历表达法有4种方法:先序遍历、中序遍历、后序遍历、层次遍历:
其先序遍历(又称先根遍历)为ABDECF(根-左-右)
其中序遍历(又称中根遍历)为DBEAFC(左-根-右)(仅二叉树有中序遍历)
其后序遍历(又称后根遍历)为DEBFCA(左-右-根)
其层次遍历为ABCDEF(同广度优先搜索)
4.1 符号表达法
(A(B(D,E), C(F)))