b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

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

电脑杂谈  发布时间:2020-03-23 11:03:57  来源:网络整理

树和二叉树的转换代码_创建二叉排序树_线索二叉树的创建与遍历

全部展开

创建二叉排序树_线索二叉树的创建与遍历_树和二叉树的转换代码

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,红黑树)会更有效.


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-149390-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...