二叉树的前序,中序,后序(如果看了这篇文档你都还不能明白,那只能说明我的描述水平还是不够到位,但我还是希望所有看到的同学能够真正弄懂二叉树的三种排序规则)
排序说明(先根-后左-右结尾)
1、先找到根A,根据先序排序规则,所以根
A排在第1位
2、由于A存在左孩子B,根据先序排序规则,B排在第2位
3、由于节点B存在左孩子D,所以先排B的左孩子D,而A的右孩子C则待排,那么D排在第3位
3、由于由于节点D存在左孩子G,所以先排D的左孩子G,而B的右孩子E则待排,那么G排在第4位
4、由于G没有找到左孩子,所以左孩子不排,但找到G的右孩子L,所以L排在第5位
5、由于L没有孩子节点,所以返回去看他的父节点G,由于G的左右节点都已经排完,则查看G的父节点D,由于D只有左孩子,没有右孩子,所以D节点也排完了,继续查看D的父节点B,发现B节点的右孩子E处于待排的阶段,所以E排在第6位
6、由于节点E存在左孩子H,所以H排在第7位
7、由于节点H不存在孩子节点,则查看H的父节点E,发现E存在右孩子I,则I排在第8位
8、由于节点I没有孩子节点,则查看I的父节点E,发现E已经排完,则再查看E的父节点B,发现节点B也已经排完,则继续查看B的父节点A,发现A的右孩子C处于待排阶段,则C排在第9位
9、由于节点C不存在左孩子,那么继续找C的右孩子,发现C确实存在右孩子F,则F排在第10位
10、由于节点F存在左孩子J,所以J排在第11位
11、由于F的左孩子J存在孩子节点,所以F的右孩子K待排,那么J的左孩子M则排在第12位
12、由于节点M没有孩子节点,则继续找M父节点J的右孩子,发现J存在右孩子N,那么N排在第13位
13、由于节点N没有孩子节点,则查看N的父节点J,发现J的左右孩子已经排完,则继续查看J的父节点F,发现节点F的右节点K还处于待排阶段,则F的右节点K排在第14位
14、由于节点K不存在孩子节点,则返回去看K的父节点F,发现节点F已经排完,则再查看节点F的父节点C,发现节点C也已经排完,则再查看C的父节点A,发现A也已经排完,继续查看A的父节点,发现A没有父节点,A就是根节点,至此整颗二叉树的前序排完
15、最后根据需要连接在一起,则该二叉树的前序为:ABDGLEHICFJMNK
排序说明(先左-后根-右结尾)
1、先找根节点A,根据中序排序规则,查找A的左孩子,发现A存在左孩子B,由于B也存在左孩子D,所以继续查找D的左孩子,发现D存在左孩子G,而G不存在左孩子,则根据中序排序规则,
G排在第1位
2、由于G是节点,则下一步找他的右孩子,发现G存在右孩子L,则L排在第2位
3、由于L不存在左右孩子,则查看L的父节点G,由于G已经排完,则再查看G的父节点D,则D排在第3位
4、由于D不存在右孩子,那么查看D的父节点B,根据中序规则,B排在第4位
5、由于B存在右节点E,发现E也存在孩子节点,则先找E的左节点,发现E的左节点H,由于H没有孩子节点,根据中序规则,H排在第5位
6、由于H是E的左节点,不存在孩子节点,则根据中序规则,E排在第6位
7、根据中序规则,再查找E的右孩子,发现E存在右孩子I,由于I不存在孩子节点,则I排在第7位
,至此E节点已经排完
8、由于E节点已经排完,则查看E的父节点B,发现B已经排完,则查看B的父节点A,根据中序规则,A排在第8位
9、根据中序规则,再查找A的右孩子C,发现C没有左孩子,则C排在第9位
10、根据中序规则,再查找C的右孩子,发现C存在右孩子F,由于F存在左孩子J,则F待排,再继续查看F节点的左孩子J,发现节点也存在左孩子M,则再查看节点M,由于M已经没有孩子节点,则M排在第10位
11、由于M是J的左节点并且M没有孩子节点,根据中序规则,J排在第11位
12、根据中序规则,再查找节点J的右孩子,发现J存在右孩子N,由于N没有孩子节点,则N排在第12位
,至此节点J已经排完
13、由于J节点已经排完,则查看J的父节点,根据中序规则,J的父节点F排在第13位
14、根据中序规则,再查找F的右孩子,发现F存在右孩子K,且K不存在孩子节点,那么K排在第14位
15、至此所有节点排完,连接起来最终排序结果为:GLDBHEIACMJNFK
排序说明(先左-后右-根结尾)
1、先找根节点A,根据排序规则先排左孩子,则查找A的左孩子,发现A存在左孩子B,由于B也存在左孩子D,则继续查找D的左孩子,发现节点D也存在左孩子G,那么继续查找G的左孩子,发现节点G并没有左孩子,则根据后序规则,查找G的右孩子,发现G存在右孩子L,且L没有孩子节点,那么
L排在第1位
2、根据后序规则,L的父节点G排在第2位
3、由于G是D的左孩子,根据后序规则,继续查找D的右孩子,发现D不存在右孩子,则D排在第3位
4、由于D是B的左孩子,根据后序规则,继续查找B的右孩子,发现B存在右孩子E,由于E存在孩子节点,则继续向下查找,发现E存在左孩子H,由于H没有孩子节点,则H排在第4位
5、由于H是E的左孩子,根据后序规则,继续查找E的右孩子,发现E存在右孩子I,且I没有孩子节点,则I排在第5位
6、由于E的左右孩子都已经找完,根据后序规则,E排在第6位
7、由于E是B的右孩子,且B的左右孩子已经找完,根据后序规则,则B排在第7位
8、由于B是A的左孩子,且B节点已经找完,根据后序规则,继续查找A的右孩子,发现A存在右孩子C,且C存在孩子节点,则继续查找C的左右孩子,发现C不存在左孩子存在右孩子F,并且F也存在孩子节点,根据后序规则,继续查找F的孩子节点,发现F存在左节点J,且J也存在孩子节点,则再往下查找,继续查找J的孩子节点,发现J存在左孩子M,且M不存在孩子节点,则M排在第8位
9、由于M是节点J的左孩子,根据后序规则,继续查找J的右孩子,发现J存在右孩子N,且N不存在孩子节点,则N排在第9位
10、由于N是节点J的右孩子,根据后序规则,J排在第10位
11、由于J节点已经全部找完,且J是F的左孩子,则根据后序规则,继续查找F的右孩子,发现K存在右孩子K,则K排在第11位
12、由于F的左右孩子已经找完,根据后序规则,F排在第12位
13、由于F是节点C的右孩子,则根据后序规则,C排在第13位
14、由于C是根A的右孩子,根据后序规则,A排在第14位
,至此全部排完
15、根据序号进行连线,得到最终的排序结果:LGDHIEBMNJKFCA