上次,我们写到了二叉树的分类,不过不知道大家有没有想过一个问题,像链表、数组这样的线性数据结构都能很容易的被遍历:
不过,像树这样的非线性数据结构就很难被遍历:
其实,树(特别是二叉树),有一套独特的遍历方式,从宏观上可以分为两大类:
深度优先遍历和广度优先遍历
我们就来一次看看这些遍历方式有怎样的规则。
前情提要:算法:树与二叉树(一)
/1.深度优先遍历/
深度优先遍历可以分为三种:前序遍历,中序遍历,后序遍历。
1.前序遍历:
前序遍历的顺序是“根节点,左节点,右节点”,按这样,第一个遍历到的是根节点7:
然后是左节点1(注意,由于该节点还有子节点,那么应该把该节点也作为一个根节点来看待,把1-4看做一个小型树,用同样的方法遍历他,所以下一个应该遍历,1的子节点4):
由于4没有子节点了,那么回溯到4的父亲节点1,接下来是右子树,因为没有所以为None: