生成二叉排序树(c++写,数据结构)
发布网友
发布时间:2022-05-02 11:15
我来回答
共2个回答
热心网友
时间:2022-04-14 13:24
typedef struct
{
int v;
NODE *left = NULL;
NODE *right = NULL;
NODE *Lead = NULL;
} NODE;
NODE* InsertValue(NODE *n, value)
{
NODE *p = (NODE *)malloc(sizeof(NODE));
p->left= NULL;
p->right = NULL;
p->v = value;
return InsertNode(n, p);
}
NODE* InsertNode(NODE *pNode, NODE *pNew)
{
if (pNew == NULL)
{
return pNode;
}
// 如果没有节点,那么返回当前新增的节点自己。
if (pNode == NULL)
{
return pNew;
}
//左小右等大的原则。
if (value < v)
{
if (pNode->left == NULL)
{
pNode->left = pNew;
pNew->pLead = pNode;
}
else
{
InsertValue(pNode->left, pNew);
}
}
else
{
if (pNode->right == NULL)
{
pNode->right = pNew;
pNew->pLead = pNode;
}
else
{
InsertValue(pNode->right, pNew);
}
}
return pNode;
}
displayTree(Node *pNode)
{
printf("%d ", pNode->v);
if (pNode->left != NULL)
{
displayTree(pNode->left);
}
if (pNode->right != NULL)
{
displayTree(pNode->right);
}
}
main()
{
int a[] = {3,5,2,45,43,7,468,23,32,2,32,65,87,23,543,76};
int i;
NODE *pRoot = NULL;
// 建立树
for(i = 1; i < 16; i ++)
{
pRoot = InsertValue(NULL, ar[i]);
}
// 打印树
displayTree(&root);
}
热心网友
时间:2022-04-14 14:42
http://www.pudn.com/downloads76/sourcecode/math/detail284950.html