아래 코드에서는 삽입 함수를 사용하여 이진 트리를 만들고 Inorder traversal의 논리를 따르는 inorder 함수를 사용하여 삽입 된 요소를 표시하려고합니다. 숫자가 삽입되고 있지만 inorder 함수 (입력 3)를 시도하면 프로그램은 아무 것도 표시하지 않고 다음 입력을 계속합니다. 논리적 인 오류가있을 수 있습니다. 정리해주십시오. 사전에 감사합니다 ...Inorder tree traversal in C 이진 트리에서
#include<stdio.h>
#include<stdlib.h>
int i;
typedef struct ll
{
int data;
struct ll *left;
struct ll *right;
} node;
node *root1=NULL; // the root node
void insert(node *root,int n)
{
if(root==NULL) //for the first(root) node
{
root=(node *)malloc(sizeof(node));
root->data=n;
root->right=NULL;
root->left=NULL;
}
else
{
if(n<(root->data))
{
root->left=(node *)malloc(sizeof(node));
insert(root->left,n);
}
else if(n>(root->data))
{
root->right=(node *)malloc(sizeof(node));
insert(root->right,n);
}
else
{
root->data=n;
}
}
}
void inorder(node *root)
{
if(root!=NULL)
{
inorder(root->left);
printf("%d ",root->data);
inorder(root->right);
}
}
main()
{
int n,choice=1;
while(choice!=0)
{
printf("Enter choice--- 1 for insert, 3 for inorder and 0 for exit\n");
scanf("%d",&choice);
switch(choice)
{
case 1:
printf("Enter number to be inserted\n");
scanf("%d",&n);
insert(root1,n);
break;
case 3:
inorder(root1);
break;
default:
break;
}
}
}
로 전화 [malloc에'의 반환 값을 캐스팅하지 마십시오()'C에서 (HTTP : // 유래. com/a/605858/28169). – unwind