非遞迴建立二叉樹

2021-10-05 04:33:26 字數 1499 閱讀 7403

通過二叉鍊錶建立二叉樹,二叉鍊錶的節點結構如下:

template

<

class

t>

struct binode

;

二叉樹類的結構如下:

template

<

class

t>

class

bitree

;

二叉樹建立的過程如下圖所示:

可以利用棧來實現非遞迴建立,另外還需要建立一種棧節點結構,該結構包括:

注意stage只表示p的建立情況,與p的左孩子和右孩子最後是否為null沒有關係。)

c++描述如下:

template

<

class

t>

struct node

;

建立起的二叉樹還需要將root指向根節點,以便通過root查詢該二叉樹。通過觀察上圖中二叉樹的建立過程,可以發現,每當棧中只有乙個節點時,該節點即為根節點,那麼可以在迴圈的過程中加入判斷棧長的語句,進而將root指向根節點。而且,根節點總是最後乙個出棧,不必擔心在迴圈中二叉樹發生變化而root沒有變化。

非遞迴建立二叉樹的具體步驟如下:

[4]返回[2]。

建構函式:bitree(t data, int n);引數:data陣列是二叉樹的順序儲存結構,n表示陣列的長度;

template

<

class

t>

bitree

::bitree

(t data,

int n)

if(no-

>stage ==0)

else

if(no-

>stage ==1)

else

no->p-

>lchild = r;

no->stage =2;

//更改stage

if(r !=

null)}

else

if(no-

>stage ==2)

else

no->p-

>rchild = r;

no->stage =3;

//更改stage

if(r !=

null)}

else

}}

這裡放上我的完整**:非遞迴建立二叉樹及測試**

二叉樹的非遞迴建立

問題描述 非遞迴建立如下圖所示的二叉樹 名 稱 建立二叉樹 非遞迴 作 者 brooke gao 時 間 2013 8 21 include include include define stacksize 50 define bitree size tree tree size define bi...

二叉樹的非遞迴建立

新手一枚,希望記下自己寫的 希望各位親能夠給我提出意見和建議 include include define max 999 max表示結點是否置為空 define max size 100 棧的最大容量 typedef int elemtype typedef struct treenodetree...

二叉樹 遞迴 非遞迴

include include include include using namespace std typedef struct node bintree typedef struct node1 btnode void creatbintree char s,bintree root 建立二叉...