二叉排序树的实现:分别以顺序表和二叉链表作为存储结构,实现二叉排序树。基本操作有查找、插入、删除。

我写了个用二叉链表作为存储结构的,不知对不对,希望高手帮忙改一改,再帮我转换一个用顺序表作为存储结构的,急用!拜托了!#include<stdio.h>#include<... 我写了个用二叉链表作为存储结构的,不知对不对,希望高手帮忙改一改,再帮我转换一个用顺序表作为存储结构的,急用!拜托了!
#include <stdio.h>
#include <malloc.h>
int main()
{
}
typedef struct BiTnode
{
int data;
struct BiTnode *lchild;
struct BiTnode *rchild;
}BiTnode,*BiTree;
BiTree search_tree(BiTree T,int keyword,BiTree *father)
{
BiTree p;
*father = NULL;
p = T;
while (p && p->data!=keyword)
{
*father = p;
if (keyword < p->data)
p = p->lchild;
else
p = p->rchild;
}
return p;
}
int Insert_tree(BiTree *T,int elem)
{
BiTree c,p,father;
c = (BiTnode *)malloc(sizeof(BiTnode));
if (!c)
return -1;
c->data = elem;
c->lchild = c->rchild = NULL;
p = search_tree(*T,elem,&father);
if (!p)
return -1;
if (father == NULL)
*T = c;
else if (elem < father->data)
father->lchild = c;
else
father->rchild = c;
return 0;
}
展开
 我来答
chen100607
2011-07-15
知道答主
回答量:68
采纳率:0%
帮助的人:20.4万
展开全部
楼主注意用顺序表作二叉树的存储结构的结点的结构, 结点的地址是顺序表的索引值
时间复杂度是 n
C/C++ code#include <stdio.h>

typedef struct Nod
{
char d;
int left, right;
}Node;

void inorder(Node t[], int root)
{
if(root!=-1)
{
inorder(t, t[root].left);
printf("%c ", t[root].d);
inorder(t, t[root].right);
}
}
void main()
{
Node t[3] ={{'r', 1, 2} , {'1', -1, -1}, {'2', -1, -1}};
inorder(t, 0);
kuopeng57
2011-07-14 · TA获得超过206个赞
知道答主
回答量:439
采纳率:0%
帮助的人:0
展开全部
BinTree root; int i,depth; printf(
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式