数据结构:树和森林
树 树是数据结构内很重要的一种结构。不过我们此处不深究,仅讨论二叉树,线索二叉树,哈夫曼树(最优树)。 二叉树 定义: (1)空树;(2)只有一个根节点;(3)有左右两个子树,并且子树也是一颗二叉树(如图)。 性质: 1.第 i 层上最多有 2 i − 1 2^{i-1} 2 i − 1 个节点. 2.深度为k的树最多有 2 k 2^k 2 k -1个节点,我们称之为满二叉树,满二叉树在底层从右向左减少n个节点,此时称为完全二叉树。 3.度为0的结点的个数为度为2的节点个数加一, n 0 = n 2 + 1 n_0=n_2+1 n 0 = n 2 + 1 . 4.n个节点的完全二叉树的深度为[ l o g 2 n log_2n l o g 2 n ]+1。 注释 :[x]表示不超过x的最大整数,也就是向下取整。 5.节点序号为 i ,在子节点存在的情况下,节点的序号为 2i和2i+1 遍历方式 1.先序遍历:先访问根节点,再访问左子树然后是右子树。 2.中序遍历:先访问左子树,再访问根节点然后再右子树。 3.后序遍历:先访问左子树,再访问右子树然后是根节点。 先序中序,后序中序能唯一的确定唯一一个二叉树 还有其他三种遍历方式 : 只需将以上三种方式的左和右换位置即可 存储结构 1.顺序存储结构(由于太浪费内存,所以说一般不用) 2.链式存储结构