前面我们研究的都是一对一的线性结构,现在我们研究的是非线性关系,即一对多。
对于树的其他概念我们按下不表,我们针对机考聊些重要的:
1、我们主要研究二叉树
2、针对二叉树,我们同顺序表一样有两种存储方式,但是对于树而言,顺序存储过于浪费空间,因此我们使用链式存储。
3、既然使用链式存储,意味着我们要定义两个类,一个是结点“Node”类,一个是树类;
4、
结点是这种类型,当然根据树的具体要求,结点也可以做出或多或少的变化(如三叉树/双向树)
5、
和链表差不多对吧?很容易理解,我们进入代码:
6、
7、遍历方式:
11、先序遍历(DLR,中左右)
使用了递归,剩下的两种遍历其实就是后三条表达式的换位。
22、中序遍历
LDR
33、后序遍历
LRD
8、二叉树的建立
规则:以先序遍历的规则来建立;以“ ”空格符来代表空孩子,以括号来代表子树,如:
我们编写代码如下:
好的,现在我们总体的看看树(一般)的框架