前言
很久没有写c++教程(有几个月)了,今天来讲讲树
为什么之前不讲树因为我不会但我现在能写出一些树的选择题了
首先我们画一棵树:
有些潦草
遍历是什么
我们要研究先/中/后序遍历,我们应该先知道什么叫遍历
遍历就是对每一个数访问一次,想我们之前写数组的时候,数组长度为n,然后我们循环1到n去研究数组的每一项,这就是遍历
在研究树的时候,我们的遍历就是访问树的每一个节点
先/中/后序就是我们遍历时的顺序(如果没有顺序的话,某个节点就可能访问多次)
先序遍历
先序遍历就是依次找树中的根节点,左孩子,右孩子
比如在上图中,先序遍历得到的遍历顺序就是124758639
中序遍历
很简单啊,那么中序遍历,就是依次找左孩子,根节点,右孩子
在上图中,中序遍历的顺序是:748532193
注意!!!我们找左孩子的时候,是找最左边的左孩子(7),很多人会找2而不是7
我们不应该找2,因为2是一个根节点,也不要找4, 4也是根节点,7不是根节点,是左孩子,我们先写7上去
7完了,我们要写4,因为没有左子树了,就找根节点,4是7的根节点
4没有右孩子,所以我们下一个找4的根节点(2)
2的根节点是1………………………………
这样找下去
把图放这里方便你们看:
后序遍历
后序遍历是依次找左孩子,右孩子,根节点
和中序遍历一样,我们要注意,找到最左边和最右边
后序遍历的顺序是748652931
最左边是7,没有右孩子,所以找根节点4
接下来不!要!找!2!找8,他是右子树中的最左边……
找下去
总结
先序遍历顺序:根节点,左边,右边
中序遍历顺序:左边,根节点,右边
后序遍历顺序:左边,右边,根节点
我们发现,先中后的意思是根节点的位置,先序就是先找根节点
写完了
最近正在研究csp j的选择题因为我觉得代码题写不出来
还想说点别的话的,但不知道说什么