二叉树具体是什么,就不再赘述,如果想了解的的可以看百度百科二叉树
而本章主要说的是二叉树所提到的前序,中序,后序的三种查询方式的具体顺序。
前序:简单的说就是先得到根部数据,然后从左侧走完,然后再得到右侧数据。简称:根左右
中序:简单的说就是先得到左侧数据(左侧为根节点,继续左侧类似递归),然后从左侧走完,然后再得到右侧数据。简称:左根右。
后序:简单的说就是先左后右再根部。简称:左右根。
看上面的定义就知道,所谓的前中后都是以根节点作为判断的,而左右不会变,还是先左侧后右。(而其中还用到了递归的概念)
先看定义,如果不是很了解,那就看例子。
上面是一个二叉树的图,现在依次用前中后三种方式遍历其数据。
前序(根左右)
- 第一步 (根)A
- 第二步,左侧 得到B,后面观察到B还是第二层的根节点,所以说B是A的左,但有是根所以看起是否又左侧(有点递归的意思)。
- 第三步 B左侧有根节点,所有拿到D。
- 第四步重复了第二步骤的逻辑拿到H
- 第五步因为H后面没有节点,所以开始取右侧的数据,也就是H根的右侧,看是否有数据。所以得到 I.
- 后面就是重复上面的逻辑了不在依次列举。
- 最后取出的逻辑是:A-B-D-H-I-E-J-C-F-G.
中序(左根右)
- 第一步:A为根,所以看起左侧B,而左侧B又为根,所以再看其左侧D,D又为根看其左侧H。H左侧没有数据,所以取H.
- 第二步:找H的根,所以取出D。
- 第三步:D的的右侧是否有数据,所以取出 I;
- 第四步:重复第二,第三,最后到达 A.
- 第五步:A右侧C,其为根,左侧又有数据,所以取出F;
- 最后取出的逻辑是: H-D-I-B-E-J-A-F-C-G.
后序(左右根)
其实,虽然顺序不同,但是按照递归推演就行,直接写最后结果,如果理解前两种,瞬间就明白。
取出的逻辑:H-I-D-J-E-B-F-G-C-A