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迴圈的用途...