資料結構與演算法之由遍歷構造二叉樹

2021-09-29 15:39:28 字數 1649 閱讀 5327

李春葆系列

#include

#include

#include

#include

#define maxsize 100

using namespace std;

typedef

char elemtype ;

typedef

struct node

btnode;

void

destroybtree

(btnode *

& b)

//銷毀二叉樹 }

btnode *

creatbt1

(char

*pre,

char

* in,

int n)

//先序加中序構造二叉樹

b=(btnode*

)malloc

(sizeof

(btnode));

b->data=

*pre;

for(p=in;pk=p-in;

b->lchild=

creatbt1

(pre+

1,in,k)

; b->rchild=

creatbt1

(pre+k+

1,p+

1,n-k-1)

;return b;

}btnode *

createbt2

(char

*post ,

char

*in,

int n)

//後序加中序構造二叉樹

r=*(post+n-1)

; b=

(btnode *

)malloc

(sizeof

(btnode));

b->data=r;

for(p=in;pk=p-in;

b->lchild=

createbt2

(post,in,k)

; b->rchild=

createbt2

(post+k,p+

1,n-k-1)

;return b;

}btnode *

findnode

(btnode * b,elemtype x)

//查詢結點

else

if(b->data==x)

else

else}}

btnode *

lchildnode

(btnode *p)

//返回結點p的左孩子結點

btnode *

rchildnode

(btnode *p)

//返回結點p的右孩子結點

intbtheight

(btnode *b)

//求高度

else

}void

dispbtree

(btnode *b)

//輸出二叉樹

dispbtree

(b->rchild)

;printf

(")");

}}}int

main()

由遍歷序列確定二叉樹 資料結構

由二又樹的遍歷可知,任意一棵二又樹的先序 中序 後序遍歷序列均是唯一的。由先序和中序序列,或由中序和後序序列,均可以唯一確定一棵二叉樹。注意 由先序和後序無法確定一顆二叉樹 1.由先序和中序序列確定二叉樹 根據二叉樹遍歷的定義可知,二叉樹的先序遍歷是先訪問根結點d,其次遍歷左子樹l,最後遍歷右子樹r...

由遍歷序列構造二叉樹

由二叉樹的先序 中序 後序 中序 層次 中序都可以唯一的確定一棵二叉樹。需要注意的是,如果只知道二叉樹的先序序列和後序序列是無法唯一確定一棵二叉樹的。題意 輸入某二叉樹的先序遍歷和中序遍歷結果,請重建出該二叉樹,並輸出它的後序遍歷序列。解題思路 在二叉樹的先序遍歷中,第乙個數字是根結點,在中序遍歷中...

由遍歷序列構造二叉樹

根據前序中序確定二叉樹 根據後序中序確定二叉樹 根據層次中序確定二叉樹 注意,根據前序和後序無法確定一棵二叉樹 include include include include include include using namespace std define elemtype char typed...