刚刚结束的上学期被编译原理折腾个半死,以为终于熬过去了,没有想到才过了几天,又要重新面对这个东西。其实,二叉树或者树,是一种很重要的数据结构,只要我想在这方面混,是逃不掉的。 不过,我已经决定了,不再像以前那样逃避放弃,我要好好的认真地学习。 既然决定了,就要做下去,半途而废不是我的风格。
二叉树,非线性的数据结构。顾名思义,最多两个叉。即,它的一个结点的度数最多为2。 二叉树(树)是由一个或一个以上的结点组成。所以,一个结点也可以称为树,一棵树也可以称为森林,So,一个结点也可以被称为森林。 其实,我最关心的是二叉树的作用,再美丽的东西没有用也没人喜欢。既然,二叉树是一种数据结构,就可以存储数据,按照树的分支关系来存储数据。(还没用过,最害怕学了很多东西,却不知道它干吗用,我在学校2年的收获就是学了很多不知道干嘛用的东西,然后很快的忘掉,不过,我要改变这种情况)。
二叉树,每个结点最多两个子树,根节点左边的叫左子树,右边的叫右子树。既然可以存储数据,就可以取出,这就是二叉树的遍历。二叉树的遍历方式分为三种:先序遍历,中序遍历,后序遍历。所谓的 先,中,后是指遍历根结点的顺序。
根据结点的子树个数不同,二叉树分为许多种,其中,有几个特殊的二叉树:1,哈夫曼树(最优树) 2,完全二叉树 3 满二叉树 4,二叉搜索树 5,决策树
哈夫曼树,是完全二叉树,完全二叉树就是,除最后一层外,其余全是满的,最后一层可以满,如果不满,子树是从右向左连续缺少的。不会出现最后一层全部只有右子树,没有左子树的情况。哈夫曼树的最大的特点就是带权路径长度最小。
未完,待续