gpt4 book ai didi

c - C 中的二叉搜索树。

转载 作者:太空宇宙 更新时间:2023-11-04 08:13:43 25 4
gpt4 key购买 nike

我很困惑我在做什么错误。为什么不按前序、后序和中序打印树。我在我感到困惑的代码行旁边写下了我的问题。另外,我不明白如何与结构相关。

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

typedef struct BST_{
int data;
struct BST_ *lchild, *rchild, *parent;
}BST;

typedef struct BiTree_{
int size;
BST *root; // is it possible to relate this root with the pointer parent of type BST? i yes then how?
}BiTree;;
BST *temp;
BST *createNode(int data){
BST *new_ele;
new_ele=(BST*)malloc(sizeof(BST));
new_ele->data=data;
new_ele->lchild=NULL;
new_ele->rchild=NULL;
new_ele->parent=NULL;
return new_ele;
}

void insertNode(BST *temp,BST *r,int data){
if(temp==NULL){
temp=createNode(data);
}

else if(temp->data >= r->data){
if(r->rchild==NULL){
r->rchild=temp;
}
else{
insertNode(r->rchild,temp,data);
}
}
else if(temp->data <= r->data){
if(r->lchild==NULL){
r->lchild=temp;
}
else{
insertNode(r->lchild,temp,data);
}
}
// return r->data; //why cann't i do this?
}

void preorder(BST *r){
if(r!=NULL){
printf("%d",r->data);
preorder(r->lchild);
preorder(r->rchild);
}
}
void inorder(BST *c){
if(c!=NULL){

inorder(c->lchild);
printf("%d",c->data);
inorder(c->rchild);
}
}
void postorder(BST *r){
if(r!=NULL){
postorder(r->lchild);
postorder(r->rchild);
printf("%d",r->data);
}
}
void delet(BST *r){
if(r!=NULL){
free(r);
}
}
void main(){
BST *new_node,*r=NULL;
BiTree *search;
search=malloc(sizeof(BiTree));
search->root=NULL;
search->size=0;
int i,a,n,data;
printf("Enter the number of element to be inserted\n");
scanf("%d",&n);
printf("Enter the data\n");
for(i=0;i<n;i++){
scanf("%d",&data);


insertNode(temp,r,data);
// printf("Enter the data %d\n",r->data); // unable to print this

search->size++;
}
printf("size is %d\n",search->size);

preorder(r);// why cann't i print the data of r. r is the root of the tree.
postorder(r);
inorder(r);
delet(r);

}

最佳答案

  • //是否可以将此根与 BST 类型的指针父项相关联?我是,那怎么办?*

请重新表述这个问题

  • //返回 r->数据;//为什么我不能这样做?

函数 void insertNode(BST *temp,BST *r,int data){ 的签名表示不应返回任何内容。改变这个

  • printf("请输入数据 %d\n",r->data);//无法打印这个

在函数中 r 被初始化为 NULL 并且函数中没有任何改变

  • 为什么我不能打印 r 的数据。 r 是树的根。

见上一点

关于c - C 中的二叉搜索树。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37223251/

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