gpt4 book ai didi

c - 卡在 Twig 上

转载 作者:太空宇宙 更新时间:2023-11-04 04:21:55 27 4
gpt4 key购买 nike

我正在尝试进行树遍历。(按顺序、顺序和后顺序)这是我的代码。

#include<stdio.h>
#include<stdlib.h>


struct node{
int data;
struct node* left;
struct node* right;
};


void Insert(struct node* root,int item)
{
struct node* parent;
struct node* NewNode = (struct node*)malloc(sizeof(struct node));
NewNode->left = NULL;
NewNode->data = item;
NewNode->right = NULL;

if (root == NULL)
root = NewNode;
else
{
parent = root;
while (1)
{
if (parent->data>item)
{
if(parent->left == NULL)
{
parent->left = NewNode;
return;
}
parent = parent->left;

}
if (parent->data<item)
{
if(parent->right == NULL)
{
parent->right = NewNode;
return;
}
parent = parent->right;
}
}

}
}




void pre(struct node *newNode)
{
if(newNode!=NULL)
{
printf("%d ",newNode->data);
pre(newNode->left);
pre(newNode->right);
}
}

void in(struct node *newNode)
{
if(newNode!=NULL)
{
in(newNode->left);
printf("%d ",newNode->data);
in(newNode->right);
}
}


void post(struct node *newNode)
{
if(newNode!=NULL)
{
post(newNode->left);
post(newNode->right);
printf("%d ",newNode->data);
}
}


int main(void)
{
int num,i;

printf("\nHow many Numbers you wanna Enter in tree:\t");
scanf("%d",&num);
int numArr[num];
printf("\nEnter the numbers: \n");
struct node* root = NULL;
for (i=0;i<num;i++)
{
scanf("%d",&numArr[i]);
Insert(root,numArr[i]);
}

printf("\nPre order traversal is:\n");
pre(root);
printf("\nIn order traversal is:\n");
in(root);
printf("\nPost order traversal is:\n");
post(root);
}

我想我在插入值时遇到了问题,因为当我运行代码时,输​​出只是空的。谁能解释我哪里出错了?

在插入函数 m 中,将根节点和要插入的项目作为参数。

然后我使用 malloc 创建一个新节点。

正在向新节点插入数据,left、right 为空,因为 left 和 right 当前未指向任何节点。

然后检查 root 是否为空。如果为 null m 则将新节点分配给根节点。

如果根不为空。(我不应该松开根,所以我将根复制到父级并使用它。)

m 检查数据是否小于 root。如果它小于 m 到 root 的左边 如果 root 的左边是 null m 插入新节点的地址 如果它不是 null m 就一直向左和向左直到它变成 null。

m 如果数据大于 root 中的值,则做同样的事情(只是向右走)。

我的解释告诉我我走在正确的道路上。但我的代码告诉我一个不同的故事。

最佳答案

这是正确的答案,感谢大家的帮助。

#include<stdio.h>
#include<stdlib.h>


struct node{
int data;
struct node* left;
struct node* right;
};


void Insert(struct node** root,int item)
{
struct node* parent;
struct node* NewNode = (struct node*)malloc(sizeof(struct node));
NewNode->left = NULL;
NewNode->data = item;
NewNode->right = NULL;

if (*root == NULL)
*root = NewNode;
else
{
parent = *root;
while (1)
{
if (parent->data>item)
{
if(parent->left == NULL)
{
parent->left = NewNode;
return;
}
parent = parent->left;

}
if (parent->data<item)
{
if(parent->right == NULL)
{
parent->right = NewNode;
return;
}
parent = parent->right;
}
}

}
}




void pre(struct node *newNode)
{
if(newNode!=NULL)
{
printf("%d ",newNode->data);
pre(newNode->left);
pre(newNode->right);
}
}

void in(struct node *newNode)
{
if(newNode!=NULL)
{
in(newNode->left);
printf("%d ",newNode->data);
in(newNode->right);
}
}


void post(struct node *newNode)
{
if(newNode!=NULL)
{
post(newNode->left);
post(newNode->right);
printf("%d ",newNode->data);
}
}


int main(void)
{
int num,i;

printf("\nHow many Numbers you wanna Enter in tree:\t");
scanf("%d",&num);
int numArr[num];
printf("\nEnter the numbers: \n");
struct node* root = NULL;
for (i=0;i<num;i++)
{
scanf("%d",&numArr[i]);
Insert(&root,numArr[i]);
}

printf("\nPre order traversal is:\n");
pre(root);
printf("\nIn order traversal is:\n");
in(root);
printf("\nPost order traversal is:\n");
post(root);
}

关于c - 卡在 Twig 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45990666/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com