树和二叉树

一.树和二叉树的基本知识
树的显而易见的知识不作介绍。
级:树根是一级,其孩子(如果有是二级)孩子的孩子是三级。(这里需要注意的是,级是从1开始算的,而不是0)。

高度(深度):树中级的个数。

元素的度:该元素孩子的个数,也节点的度为0。

一棵树的度:其所拥有元素的度的最大值。

二叉树:一颗二叉树t是有限个元素的集合(可以为空)。当二叉树非空时,其中有一个元素称为根,余下的元素(如果有的话)被划分为两颗二叉树,分别称为t的左子树和右子树。

二叉树和数的根的根本区别是:
1.二叉树的每个元素都恰好有两颗子树(其中一个或者两个可能为空)。而树的每个元素可有任意数量的子树。
2.在二叉树中,每个元素的子树都是有序的,也就是说,有左子树和右子树之分。而树的子树是无序的。
3.二叉树可以为空,但树不能为空。(不一定)

补充:二叉树可以用来表示算数表达式。

二.二叉树的特性
1.一颗二叉树有n个元素,n>0,它有n-1条边。
树是最大无圈连通图,这个特性对所有树都成立。
2.一颗二叉树的高度为h,h>=0,它最少有h个元素,最多有2^h-1个元素。
3.一颗二叉树有n个元素,n>0,它的高度最大为n,最小高度为[log2(n+1)].
特性二是特性三的反例。

三.二叉树的种类
1.满二叉树:高度为h的二叉树恰好有2^h-1个元素时,称为满二叉树。
2.完全二叉树:对高度为h的满二叉树的元素,从第一层到最后一层,在每一次中从左至右,顺序编号,从1到2^h-1,加入从满二叉树中删除k个编号为2^h-i的元素,1<=i<=k<2^h,所得的二叉树称为完全二叉树。

设完全二叉树的一元素编号为i,1<=i<=n.则完全二叉树有如下特性:
1. 如果i=1,则该元素为二叉树的根。若i>1,则其父节点的编号为[i/2].(向下取整)
2. 如果2i大于n,则该元素无左孩子。否则其左孩子的编号为2i。
3. 如果2i+1大于n,则该元素无右孩子。否则其右孩子的编号为2i+1。

以上便是二叉树的基本知识,对二叉树的描述很有用。

参考文献:数据结构算法与应用C++语言描述。

你可能感兴趣的:(C++算法)