ACM演算法 資料結構篇 二叉排序樹

2021-10-02 19:50:01 字數 3420 閱讀 2598

第一題:

思路:這個思路整體上來說,比較簡單,就是記一下插入構造二叉排序樹的**,理解一下就可以了

**如下:

#include

struct nodetree[

101]

;int loc;

node*

creat()

//固定的有關樹的模板**

void

preorder

(node* t)

if(t-

>rchild!=

null)}

void

inorder

(node* t)

printf

("%d"

,t->c);if

(t->rchild!=

null)}

void

postorder

(node *t)

if(t-

>rchild!=

null

)printf

("%d"

,t->c);}

//前中後遍歷的模板**

node*

insert

(node *t,

int x)

else

if(t-

>c>x)

else

if(t-

>c

return t;

}int n;

intmain()

preorder

(t);

printf

("\n");

inorder

(t);

printf

("\n");

postorder

(t);

printf

("\n");

}return0;

}

第二題:

思路:對於構造一棵唯一的二叉樹方面,需要包括中序遍歷在內的前序遍歷,後序遍歷。而這道題是判斷兩顆二叉樹是否一樣,其實思想也是,看其遍歷結果字串是否一樣就行了。

**如下:

#include

#include

struct nodetree[11]

;int loc;

int n,idx=0;

char

*str1,

*str2;

char pre1[11]

,in1[11]

,pre2[11]

,in2[11]

;node*

creat()

void

preorder

(node* t)

if(t-

>rchild!=

null)}

void

inorder

(node *t)

str2[idx++

]=t-

>c+

'0';

if(t-

>rchild!=

null)}

node*

insert

(node* t,

int x)

else

if(t-

>c>x)

else

if(t-

>c

return t;

}int

main()

str1=pre1;

str2=in1;

idx=0;

preorder

(t);

str1[idx]=0

; idx=0;

inorder

(t);

str2[idx]=0

;for

(int j=

0;j) str1=pre2;

str2=in2;

idx=0;

preorder

(t);

str1[idx]=0

; idx=0;

inorder

(t);

str2[idx]=0

;if(strcmp

(pre1,pre2)==0

&&strcmp

(in1,in2)==0

)else

printf

("no\n");

}}return0;

}

當然了,這裡還能在簡單一點,就是因為是比較前序中序兩個字串,所以可以把每一棵樹的前中序放在乙個串裡面,這樣的話,可能看著或者操作起來很簡單。

如下:

#include

#include

struct nodetree[11]

;int loc;

int n,idx=0;

char

*str;

char a[25]

,b[25];

node*

creat()

void

preorder

(node* t)

if(t-

>rchild!=

null)}

void

inorder

(node *t)

str[idx++

]=t-

>c+

'0';

if(t-

>rchild!=

null)}

node*

insert

(node* t,

int x)

else

if(t-

>c>x)

else

if(t-

>c

return t;

}int

main()

str=a;

idx=0;

preorder

(t);

inorder

(t);

str[idx]=0

;for

(int j=

0;j) str=b;

idx=0;

preorder

(t);

inorder

(t);

str[idx]=0

;if(strcmp

(a,b)==0

)else

printf

("no\n");

}}return0;

}

資料結構 二叉排序樹

二叉排序樹是一種特殊結構的二叉樹,它作為一種表的組織手段,通常被稱為 樹表。可以作為一種排序和檢索的手段。定義 二叉排序樹或是空樹,或是具有下述性質的二叉樹 其左子樹上所有結點的資料值均小於根結點的資料值 右子樹上所有結點的資料值均大於或等於根結點的資料值。左子樹和右子樹又各是一棵二叉排序樹。對二叉...

資料結構 二叉排序樹

二叉排序樹 binarysorttree 具有下列性質的二叉樹 1 若左子樹不空,則左子樹上所有結點的值均小於它的根結點的值 2 若右子樹不空,則右子樹上所有結點的值均大於它的根結點的值 3 左 右子樹也分別為二叉排序樹 include includeusing namespace std type...

資料結構 二叉排序樹

如果需要乙個滿足 支援排序性 高效插入 刪除操作 高效查詢的資料結構,怎麼做?先看看一些簡單的資料結構 1 排序順序表 陣列 查詢可以採用折半查詢演算法,時間效率為o log2n 插入 刪除操作的時間複雜度為o n 資料量大時,效率太低。2 排序單鏈表 只能採用順序查詢,時間複雜度為o n 不能採用...