c - 修改链表使其变成二叉树
问题描述
以下是用于创建链表的结构格式:
struct LetterFrequencyPair
{
char character;
int frequency;
struct LetterFrequencyPair* next;
};
/ ******************************************************* *******************************\
void createList()
{
char c;
int f;
struct LetterFrequencyPair* temp;
temp = malloc(sizeof(struct LetterFrequencyPair));
printf("Enter the Character: ");
scanf("%c", &c);
temp->character = c;
printf("Enter the frequency of the character: ");
scanf("%d", &f);
getchar();
temp->frequency = f;
temp->next = NULL;
if (root == NULL)
{
root = temp;
}
else
{
struct LetterFrequencyPair* p;
p = root;
while (p->next != NULL)
{
p = p->next;
}
p->next = temp;
}
printf("\n");
}
以上是我为创建链表而编写的函数。
我的问题是如何修改这个函数和结构来生成二叉树?
我知道我必须更改结构以具有指向左右孩子的指针,而不是下一个。但是当我试图将它们连接起来时,我遇到了困难,因为有两个不同的方向。我在下面粘贴了我尝试的修改:
struct LetterFrequencyPair
{
char character;
int frequency;
//Creating a pointer to point to the next child in the list
struct BinaryTreeNode* leftChild;
struct BinaryTreeNode* rightChild;
};
void createList()
{
char c;
int f;
struct LetterFrequencyPair* temp;
temp = malloc(sizeof(struct LetterFrequencyPair));
printf("Enter the Character: ");
scanf("%c", &c);
temp->character = c;
printf("Enter the frequency of the character: ");
scanf("%d", &f);
getchar();
temp->frequency = f;
temp->leftChild = NULL;
temp->rightChild = NULL;
if ((rootRight = NULL) && (rootLeft = NULL))
{
root = temp;
}
else
{
struct LetterFrequencyPair* p;
p = root;
while (p->leftChild != NULL)
{
p = p->leftChild;
}
p->leftChild = temp;
struct LetterFrequencyPair * p1;
p1 = root;
while (p1->rightChild != NULL)
{
p1 = p1 ->rightChild;
}
p1->rightChild = temp;
}
printf("\n");
}
解决方案
推荐阅读
- reactjs - 在 react native 中将 API 数据加载到 Picker(使用函数组件)
- arangodb - ArangoDB 图遍历对不同的顶点类型使用不同的过滤器
- typescript - 如何创建嵌套的泛型类型
- symfony4 - Symfony 通过“em”返回集合
- css - border-radius:6px on parent, position:sticky on child, how to overflow:hidden?
- javascript - 我坚持做作业(卡在循环中)
- hyperledger-fabric - 如何正确初始化 FabricSDK?
- amazon-web-services - AWS 从我的账户释放弹性 IP 后保留多长时间
- magento - 组产品 - Shopify
- amazon-web-services - 如何在区域中创建 lambda 函数