永发信息网

创建1 2 3 4 5 6 7 二叉排序树

答案:1  悬赏:10  手机版
解决时间 2021-02-09 02:54
创建1 2 3 4 5 6 7 二叉排序树
最佳答案
typedef enum {ERROR, OK, UNINITED}status;
typedef int ElemType;

typedef struct BiTree
{
struct BiTree *left, *right;
ElemType data;
}BiTree;

status CreateBiTree(BiTree **tree, ElemType *arr, int n)
{
int found, i;
BiTree *parent, *node;

InitBiTree(tree);
for (i = 0; i < n; i++)
{
searchNode(*tree, arr[i], &parent, &found);
if (found)
return ERROR;

node = malloc(sizeof(BiTree));
if (node == NULL)
return ERROR;
node->data = arr[i];
node->left = node->right = NULL;

if (*tree == NULL)
*tree = node;
else if (parent->data > arr[i])
{
if (parent->left && parent->left->data > arr[i])
node->right = parent->left;
else
node->left = parent->left;
parent->left = node;
}
else
{
if (parent->right && parent->right->data > arr[i])
node->right = parent->right;
else
node->left = parent->right;
parent->right = node;
}
}
return OK;
}

BiTree *searchNode(BiTree *tree, ElemType data, BiTree **parent, int *found)
{
BiTree *ptemp = NULL;

while (tree != NULL && tree->data != data)
{
ptemp = tree;
if (data > tree->data)
tree = tree->right;
else
tree = tree->left;
}
if (tree != NULL && tree->data == data)
*found = 1;
else
*found = 0;

*parent = ptemp;
return tree;
}

这是创建二叉排序树的代码,调用CreateBiTree来创建二叉排序树。第一个参数是树根结点的指针的指针,声明一个BiTree *类型然后把它地址传进去就行。第二个参数是一个数组,就是你这的1 2 3 4 5 6 7,第三个参数是数组元素个数。


顺便说一句,你给的这种情况刚好是二叉排序树效率最低的时候,创建的结果是一条链。这种情况下,用自平衡二叉树(如AVL、红黑树)效率比较高。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
各位电脑专家 大神 来帮忙啊~ 家里笔记本提示
湖北三峡律师事务所我想知道这个在什么地方
秦朝统一后采取的一系列措施中,革除东周以来
115网盘的下载列表
汤东路/黄徐路(路口)我想知道这个在什么地方
自汗、盗汗总的病理是A.卫外不固,腠理疏松,
回复:关于现在肉还厉不厉害的问题 新人别来
我的手机为什么有骚扰电话
如何在彼此都有好感的情况下表白
阿拉斯加和罗威纳犬杂交狗能长多少斤
内蒙古7天游可以既去呼和浩特又去呼伦贝尔吗
在香港买钢琴运回深圳可行吗
银杯子喝水好吗 紫铜杯子喝水好吗
狮子楼大酒店在哪里啊,我有事要去这个地方
九阳 DJ13B-D58SG 和 DJ13B-D08D 豆浆机 哪个
推荐资讯
孙云耀的女儿图片
江铃集团轻汽吉首骐铃专营店怎么去啊,我要去
lolVN屠龙勇士薇恩皮肤值不值购买
制造业的好处到底是什么?
还记得那天你说爱我不变是那首歌曲的歌词
新源蜜月客栈怎么去啊,我要去那办事
中药'一般一剂药煎煮两次后合并药液,分
“世界上没有两片完全相同的叶子”、“种瓜得
米老鼠和唐老鸭有一集是唐老鸭被一个细菌感染
中建文苑我想知道这个在什么地方
馥草堂怎么去啊,我要去那办事
桃花源记和梦幻西游差不多吗?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?