(C語言)關於二叉排序樹的建立和查詢

時間 2021-08-11 17:17:29

1樓:匿名使用者

#include

#include

typedef struct np node;

node *create(void)

node *t(node *a,int d)else if (d>=a->dat)

else if (ddat)

return a;

}void inorder(node *r)}int ser(node *so,int a)int main(int argc, char* argv)fclose(fp);

inorder(bst); /*輸出二叉排序樹*/putchar('\n');

scanf("%d",&i); /*輸入需要查詢的數字*/if (ser(bst,i)) printf("yes"); /*如果找到,則輸出yes,否則輸出no*/

else printf("no");

return 0;

2樓:素水雲兒

難,做不出,這幾天做二維雙向迴圈鏈做的頭暈

3樓:匿名使用者

找本資料結構的書看看,問題就可以解決了。

4樓:綦葉羿情韻

#include

#include

#include

#define

infmt

"%d"

#define

outfmt

"%d"

/*#define

null

0l*/

#define

bool

int#define

true

1#define

false

0#define

len10000

typedef

intelemtype;

typedef

struct

bstnode

bstnode,

*bstree;

/*插入新節點

*/void

insert(bstree

*tree,

elemtype

item)

cursor

=cursor->lchild;

}else

cursor

=cursor->rchild;}}

}return;}/*

查詢指定值

*/bstree

search(bstree

tree,

elemtype

item)

return

null;}/*

中綴遍歷

*/void

inorder(bstree

tree)}/*

**資源

*/void

cleanup(bstree

tree)}/*

產生一組隨機數

*/void

randnum(int

*a,ints)}

}}void

main()

while

(false

==finish);

switch

(choice)

break;

}case

'2':

break;}}

printf("\n\n建立完成...\n");

inorder(root);

printf("\n\n");

/*二叉排序樹的查詢測試

*/do

while

(choice=='y'||choice=='y');

cleanup(root);}

二叉排序樹與平衡二叉排序樹基本操作的實現

幸福減快樂 include include typedef struct bitnodebitnode,bitree bitree search tree bitree t,int keyword,bitree father return p bitree creat tree int count ...

構造平衡二叉樹,平衡二叉樹是二叉排序樹嗎?

從結點48向根回溯,依次計算各個結點的平衡因子,48的為0,37為 1 左減去右 53為 1,24為 2,產生不平衡,從24往來路看2個結點 路徑形態為先向右走再向左走,於是 和37進行先右後左雙旋 第一步 將 向右旋轉,37上,53變為37的右子樹,48交給53成為53的左子樹。第二步 將 向左旋...

輸入帶排序序列生成二叉排序樹,並調整使其變為平衡二叉樹

include stdio.h include conio.h include stdlib.h define null 0int leftdep,rightdep typedef struct bitnodebintnode,bintree bintree createbitree return ...