第一題:
思路:這個思路整體上來說,比較簡單,就是記一下插入構造二叉排序樹的**,理解一下就可以了
**如下:
#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 不能採用...