什么是树?
树是由结点或顶点和边组成的(可能是非线性的)且不存在着任何环的一种数据结构。没有结点的树称为空(null或empty)树。
一些有关于树的专业术语:
根(root): 树的顶端节点。
孩子(Child): 当远离根的时候,直接与另一个结点相连的结点叫做孩子。
双亲(parent):相应的,另外一个结点就是孩子的双亲。
兄弟(Siblings):具有同一个双亲的孩子结点之间就是兄弟关系。
祖先(Ancestor):一个结点的祖先就是从根到该结点所经分支上的所有结点。
子孙(Descendant):反之,以某结点为根的任意子树中的任意结点都成为该点的子孙。
叶子(leaf):没有孩子的结点称为叶子结点。
分支(branch):至少有一个孩子的结点称为分支。
度(degree):结点所拥有的子树的个数称为节点的度。
边(edge):一个结点与另一个结点的连接被称为边。
路径(path):连接结点和其后代结点的序列。
层次(level):结点的层次从根开始定义,根为第0层,根的孩子为第1层,以此类推。
结点的高度(height of node):指的是该结点和某个叶子之间存在的最长路径的边的个数。
树的高度(height of tree):指其根结点的高度。
结点的深度(depth of node):指的是从树的根节点到目标结点的边的个数。
森林(forest):多个不相互相交的树的结合。
二叉树
什么是二叉树???
每个结点最多拥有两棵子树,且两棵子树有左右之分,顺次不可颠倒,这样的树称为二叉树。
二叉树有哪些性质???
a. 第i层的结点最多有2^i个
b. 高度为k的二叉树最多有2^(k+1)-1个结点 (空树的高度为-1)
c. 对于任意一颗二叉树 其叶子结点树定为m,所有度为2的结点定位n 那么 m-n = 1;
二叉树的分类:
1.完美二叉树(perfect binary tree):
什么是完美二叉树??
一个深度为k(>=-1)且有2(k+1)-1个结点的二叉树称为完美二叉树(满二叉树)。
2.完全二叉树(complete binary tree)
什么是完全二叉树???
换句话说,完全二叉树就是从根节点到倒数第二层都满足完美二叉树,最后一层可以不完全填充,但是叶子结点都应该靠左对齐。
3.完满二叉树(full binary tree)
什么是完满二叉树???
换句话说,所有非叶子结点的度都是2。(只要有孩子,就必须是两个孩子,不然就没有孩子)