這是二叉樹基本知識的最后一篇文章來,講些二叉樹的遍歷。
二叉樹的四樣遍歷依然有,當然,我重點講前二:先序、后序。順帶講講層次遍歷。還有一個特殊的——中序遍歷。
一、前序遍歷(又叫先序遍歷)
前序遍歷,和普通樹一樣,總結起來四句話——先根結點,再左子樹,后右子樹,到此完工。
呵呵,其實挺簡單的。
代碼:
void xian(Tree T)//先序遞歸遍歷
?{
? ? if(T!=NULL)
? ? ?{
? ? ? ? ?cout<<T->data<<" ";
? ? ? ? ?PreOrder(T->lchild);
? ? ? ? ?PreOrder(T->rchild);
? ? ?}
?}
二、中序遍歷
這我要好好講一講了,他的規(guī)律是左子樹---->根----->右子樹。
如果是個滿二叉,那么這深入下去……什么時候能回到根啊。
當然,因為非二叉樹的普通樹度大于等于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.圖一,普通二叉樹

所以嘛,四遍歷:
先序:ABDGECF;
中序:DGBEAFC;
后序:GDEBFCA;
層次:ABCDEFG;(這答案,呵呵)
還簡單,再來一個——
2.完全二叉樹

這樹編號是數(shù)字呵,不過沒關系。
四遍歷:
先序:124895(10)367;
中序:8492(10)51637;
后序:894(10)526731;
層次:123456789(10);//這也爽
也差不多了,例子也舉夠了,就這樣吧。二叉樹的遍歷,其實挺??嫉模贿^也沒事,挺簡單。
給兩道題哈,1339、1340,一本通網站,經典的題,都是知兩序,求一序,也滿經典的。
日更完成,又是一篇“偏大型日更文”,600字。