1樓:匿名使用者
前序:根,左兒子,右兒子
中序:左兒子,根,右兒子
後序:左兒子,右兒子,根
首先是要牢記一上幾句話
比如這棵樹的中許遍歷,a有左兒子,先不訪問a,以此類推,直到d沒有左兒子,訪問d,然後訪問d的根b,然後應該訪問b的右兒子,但是b沒有,所以訪問b的根a,訪問完a以後訪問a的右子樹。先看c,c有左兒子,所以先不訪問c,看c的左兒子e,e沒有左兒子,所以訪問e,然後e的根c,然後c的右兒子f
後序遍歷與這個原理一樣,只是訪問順序不同,自己看看,不懂再吧
2樓:
知道先序(根左右)和中序(左根右),可求後序(左右根);知道中序和後序,可求先序;知道先序後序,求出的2叉樹不唯一。這些書上都講過。根據這些推。
32.b
33.a
34.d 首先確定根結點是c,該2叉樹根結點無右子樹,然後後序只剩下dabe了,中序為deba,
e,又確定e為根,而中序的左邊只有d,所以e的左孩子是d,所以中序右邊只剩ba沒確定了。
而後序則是ab,所以能確定a是b的右孩子。
35.b
其它的都按照這樣推,就ok
只要記住先序(根左右)中序(左根右)後序(左右根).就行。
c語言資料結構-二叉樹的遍歷
3樓:夏天的小紅花
np[i]->lchild=np[i]->rchild=(void*)0
它的意思就是:
np[i]->lchild=np[i]->rchild=null
資料結構二叉樹怎麼遍歷啊??
4樓:巴伐利亞巨人
拿先序遍歷舉例: 先序遍歷 是根左
右先遍歷根a,然後遍歷a的左子樹(是版左面那一群),然後遍歷a的右子權樹(為空)。
在a的左子樹中,先遍歷根也就是b,在遍歷b的左子樹也就是c,在遍歷b的右子樹,是右邊的一群。
在b的右子樹中繼續…………
資料結構二叉樹的遍歷問題
計算機,資料結構,二叉樹的遍歷,先序遍歷,後序遍歷,中序遍歷,急急急急急急,跪求高手幫助
5樓:
中序遍歷為abcd,前序遍歷序列為cabd前序遍歷先訪問根,所以c為根,在中序遍歷中先訪問左子樹,再訪問根,最後訪問右子樹,所以在中序序列中,c前面的為左子樹,第二個訪問的是左子樹的根a以此類推可得這樣的一棵二叉樹:
c/ \
a d\b
對這棵二叉樹後序遍歷可得後序序列為badc
請教一下資料結構 二叉樹的先序遍歷 中序遍歷 後序遍歷 是怎麼弄的
6樓:匿名使用者
後序遍歷就是:
後序遍歷左子樹
後序遍歷右子樹
輸出根節點
如圖舉例就是:
左子樹為bde三個節點
。。左子樹的左子樹為d
。。左子樹的右子樹為e
。。左子樹的根為b
左子樹後序遍歷為deb。
右子樹為fc兩個節點
。。右子樹的左子樹不存在
。。右子樹的右子樹為f
。。右子樹的根為c
右子樹後序遍歷為fc
整個樹的根為a
所以就是 debfca
7樓:孤鬆獨海
無論是先中後序遍歷,對於子節點都是先左節點後右節點的,後序遍歷是先遍歷子節點,
則開始找a的左邊,再找b的左邊 d 右邊e 接著b 這樣a的左邊遍歷完 再遍歷右邊先遍歷c的子節點f 再c 最後根節點a 則就是debfca
8樓:匿名使用者
以下是關於二叉樹操作的11個簡單演算法 */ /****/ struct btreenode{ 中序遍歷 */ inorder(bt); printf(
9樓:
先序遍歷 根左右abdecf
中序遍歷 左根右dbeacf
後序遍歷 左右根debfca
後序,你先看左枝,最左面的是d,接著在d右邊的是e,而d和e是b的分支,按照「左右根」的順序,就是deb,然後以此類推,看a的右分支,f是c的右分支,寫下來就是fc,然後再根據「左右根」,結果就是debfca
10樓:老馮文庫
所謂先序、中序和後序的區別在於訪問根的時機,分別是blr、lbr和lrb,其中b、l、r分別表示根結點、根結點的左子樹和根結點的右子樹。
以後序遍歷為例進行講解。
後序遍歷演算法:
(1) 後序遍歷根結點的左子樹;
(2) 後序遍歷根結點的右子樹。
(3) 訪問二叉樹的根結點;
你的方法是將樹分解為根、左子樹、右子樹,再將子樹繼續按前述方法分解,直至每一部分只剩一個結點或空為止。
對該圖,分解為
根(a),根的左子樹(bde,不分先後),根的右子樹(cf,不分先後)
故後序的基本順序是(bde)、(cf)、(a)同樣的道理,對(bde)和(cf)也進行分解:
根(b)、左子樹(d)、右子樹(e) 後序的基本順序是deb根(c)、左子樹(空)、右子樹(f) 後序的基本順序是fc整合起來就是:d e b f c a
11樓:匿名使用者
後序遍歷是:左、右、根
即,先遍歷左結點,再遍歷右結點,再遍歷根結點根據你的圖
先遍歷a的左結點,由於a的左結點b還有左結點,所以就先遍歷到d了,然後就是b的右結點
演算法可以如下設計:
void postorder(btnode *r)}
中序遞迴遍歷二叉樹的演算法?(資料結構)
12樓:匿名使用者
#include
#include
#define maxsize 100
typedef char elemtype;
typedef struct node
bitnode;
}}j++;
ch=str[j];}}
bitnode *find(bitnode *b,elemtype x)
}bitnode *lchild(bitnode *b)bitnode *rchild(bitnode *b)int bitreedepth(bitnode *b)void visit(char ch)
/*先序遍歷二叉樹*/
void preorder(bitnode *b)}/*中序遍歷二叉樹*/
void inorder(bitnode *b)}/* 後序遍歷二叉樹*/
void postorder(bitnode *b)} void main()
printf("\n");
printf("(3)二叉樹b的深度為:%d\n",bitreedepth(b));
printf("(4)先序遍歷序列為:");
preorder(b);
printf("\n(5)中序遍歷序列為:");
inorder(b);
printf("\n(6)後序遍歷序列為:");
postorder(b);
printf("\n");}
13樓:呆啊呆啊呆
seek( 某一節點)
14樓:匿名使用者
#include
using namespace std;
#include
#include
#include
#define maxsize 20 //最大結點個數
//#define n 14 //必須輸入結點個數(包含虛結點)
#define m 10 //最大深度
typedef struct nodebitree;
bitree*q[maxsize];
bitree*creatree()
rear++;
q[rear]=s;
if(rear==1)
else
else
if(rear%2==1)
front++;
}//i++;
cin>>ch;
}return t;
}int countleaf(bitree* t)
int treedepth(bitree *t)
}void output(bitree*t) //輸出列印二叉數
cout
output(t->lchild );}} int menu_select( ) return sn; } int main( ) }return 0; } /*void main()*/ 15樓:匿名使用者 void inorder ( bitptr t )} 先介紹一下樹 1.樹的定義 樹是一種常見的非線性的資料結構。樹的遞迴定義如下 樹是n n 0 個結點的有限集,這個集合滿足以下條件 有且僅有一個結點沒有前件 父親結點 該結點稱為樹的根 除根外,其餘的每個結點都有且僅有一個前件 除根外,每一個結點都通過唯一的路徑連到根上。這條路徑由根開始,而未端就在... 圭旻陰安夢 這個問題的中文意思是 任何一個平衡二叉樹,如果它總共有16個結點,那麼它的 最大 深度是多少?解答 我用星號表示結點 平衡二叉樹是這樣的二叉樹 它的左右子樹都是平衡二叉樹,且兩者深度之差不超過1 圖1每個父結點度有左右兩個子結點 答案 a 1.平衡二叉樹解決的是動態問題,靜態的查詢無需平... 程式vs2003成功編譯執行 include stdafx.h include using namespace std typedef struct tree bintree 二叉樹的建立 bintree create char str,intpose,intsize return t void p...資料結構二叉樹
平衡二叉樹的問題,平衡二叉樹 資料結構問題?
二叉樹的遍歷問題,二叉樹的遍歷問題?