二叉排序樹,用順序表(一維陣列)作儲存結構

時間 2021-06-09 23:02:13

1樓:高金山

#include

#include

using namespace std;

typedef struct _node

*nodeptr;

nodeptr search(nodeptr t,int key)//查詢關鍵字key

else if(t->key == key)else if (t->key < key)else }

nodeptr insert(nodeptr t,nodeptr s)//插入節點

else if (t->key > s->key)else

return (t);

} void order(nodeptr t)//中序遍歷 }void destroy(nodeptr t)//銷毀 }nodeptr create(int a,int n)//建樹s->key = a[i];

s->lchild = null;

s->rchild = null;

t = insert(t,s);

} return t;

} nodeptr delnode(nodeptr p)r->rchild = p->rchild;

nodeptr q = p->lchild; //q指向其左子樹;

free(p);

return q;

}else

}//刪除該結點

nodeptr remove(nodeptr b,int x)return b;

}int main()

//生成一棵二叉排序樹

t=create(b,n);

//對二叉樹t作中序遍歷,輸出結果

order(t);

printf("\n");

printf("輸入元素x:");

scanf("%d",&x);//x=12;

if(remove(t,x))

else

//銷毀二叉樹

destroy(t);

return 0;}

2樓:匿名使用者

你先找本書看看,用靜態鍊表的思想可以實現。有空的話幫你寫寫,不過最近比較忙啊,忙考試。

二叉排序樹的實現:分別以順序表和二叉鍊表作為儲存結構,實現二叉排序樹。基本操作有查詢、插入、刪除。

3樓:匿名使用者

樓主注意bai用順序表作二叉樹的du儲存結構的zhi結點的結構, 結點的dao位址是順序表的索引回值時間答複雜度是 n

c/c++ code#include

typedef struct nod

node;

void inorder(node t, int root)}void main()

, , };

inorder(t, 0);

4樓:匿名使用者

bintree root; int i,depth; printf(

二叉排序樹C語言問題

include include include typedef struct nodetreenode treenode make node int item void free node treenode t void print item treenode t void in order tre...

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

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,...

嚴蔚敏版本的資料結構中的二叉排序樹中刪除節點時重接Q的左右子樹的方法為何有選擇語句

濮方雅 因為有可能該刪除的節點下面的左子樹沒有右子樹的情況。如下 其中o是待刪除的節點,o 下面有左右子樹l r,但l下面沒有右子樹,這種情況下,直接把l的左子樹,也就是a提上來即可 a 在點p的左右子樹同時存在時,程式要用左子樹中的最大的元素,即p的左子樹中最右邊的元素替代p。while迴圈的用途...