二叉树(下)

这是二叉树基本知识的最后一篇文章来,讲些二叉树的遍历。

二叉树的四样遍历依然有,当然,我重点讲前二:先序、后序。顺带讲讲层次遍历。还有一个特殊的——中序遍历。


一、前序遍历(又叫先序遍历)

前序遍历,和普通树一样,总结起来四句话——先根结点,再左子树,后右子树,到此完工。

呵呵,其实挺简单的。

代码:

void xian(Tree T)//先序递归遍历

 {

    if(T!=NULL)

     {

         cout<<T->data<<" ";

         PreOrder(T->lchild);

         PreOrder(T->rchild);

     }

 }

二、中序遍历

这我要好好讲一讲了,他的规律是左子树---->根----->右子树。

如果是个满二叉,那么这深入下去……什么时候能回到根啊。

当然,因为非二叉树的普通树度大于等于3,所以嘛……进行不了中序遍历。

代码:

void zhong(BiTree T)//中序递归遍历

 {

     if(T!=NULL)

     {

         InOrder(T->lchild);

         cout<<T->data<<" ";

         InOrder(T->rchild);

     }

 }

三、后序遍历

跟普通有根树一样,先左子树,再右子树,后根结点,到此完工。

没必要多说,直接上代码。

代码:

void PostOrder(BiTree T)//后序递归遍历

 {

     if(T!=NULL)

     {

         PostOrder(T->lchild);

         PostOrder(T->rchild);

         cout<<T->data<<" ";

     }

 }

四、层次遍历

这就是普通操作,没必要给代码。

一层一层来,很简单。


后面,我给几个例子。

1.图一,普通二叉树

image图一

所以嘛,四遍历:

先序:ABDGECF;

中序:DGBEAFC;

后序:GDEBFCA;

层次:ABCDEFG;(这答案,呵呵)

还简单,再来一个——

2.完全二叉树

image图二:完全二叉树

这树编号是数字呵,不过没关系。

四遍历:

先序:124895(10)367;

中序:8492(10)51637;

后序:894(10)526731;

层次:123456789(10);//这也爽


也差不多了,例子也举够了,就这样吧。二叉树的遍历,其实挺常考的,不过也没事,挺简单。

给两道题哈,1339、1340,一本通网站,经典的题,都是知两序,求一序,也满经典的。

日更完成,又是一篇“偏大型日更文”,600字。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容