C 我在做代码树,数据结构。但是,打印过程中有一个错误
插入过程似乎没有问题,但打印时只输出根节点。有什么问题? 文本错误C 我在做代码树,数据结构。但是,打印过程中有一个错误,c,pointers,data-structures,tree,nodes,C,Pointers,Data Structures,Tree,Nodes,插入过程似乎没有问题,但打印时只输出根节点。有什么问题? 文本错误 n=(节点*)m(节点大小) 打印、扫描 数据结构,树 struct node { int data; node* l, *r; }; 撇开语法和样式问题不谈,我注意到您的Insert函数中有一个逻辑错误。看起来您正在实现一个二叉搜索树,并且正在正确地遍历该树。但是,您实际上并没有插入到树中,因为节点p没有指向树;它只是节点的一个副本 考虑一下当我们有下面的树时会发生什么: 1 /
struct node {
int data;
node* l, *r;
};
撇开语法和样式问题不谈,我注意到您的
Insert
函数中有一个逻辑错误。看起来您正在实现一个二叉搜索树,并且正在正确地遍历该树。但是,您实际上并没有插入到树中,因为节点p没有指向树;它只是节点的一个副本
考虑一下当我们有下面的树时会发生什么:
1
/ \
NULL NULL
让我们在树中插入2
Insert(st, 2)
Step 1: p is a COPY of the root of st, which is node 1
1 == p
/ \
NULL NULL
Step 2: Because p->data == 1 < 2, we move to the right and hit NULL
1
/ \
NULL NULL == p
Now we assign p to the new node n:
1
/ \
NULL NULL; p = n
撇开语法和样式问题不谈,我注意到您的
Insert
函数中有一个逻辑错误。看起来您正在实现一个二叉搜索树,并且正在正确地遍历该树。但是,您实际上并没有插入到树中,因为节点p没有指向树;它只是节点的一个副本
考虑一下当我们有下面的树时会发生什么:
1
/ \
NULL NULL
让我们在树中插入2
Insert(st, 2)
Step 1: p is a COPY of the root of st, which is node 1
1 == p
/ \
NULL NULL
Step 2: Because p->data == 1 < 2, we move to the right and hit NULL
1
/ \
NULL NULL == p
Now we assign p to the new node n:
1
/ \
NULL NULL; p = n
1) n=(node*)m(sizeof(node))->n=(node*)malloc(sizeof(node))2)print->printf,scan->scanfi如果编译器报告语法错误,请显示确切的消息。否。没有由编译器引起的语法错误。当代码上载到stackoverflow时,typedef、变量名等出现错误。如果没有语法错误,那么为什么在问题中提到语法错误??请澄清一下,您真的有宏
m
来替换malloc
和print
ro替换printf
?那是自找麻烦。很多麻烦。1)n=(node*)m(sizeof(node))->n=(node*)malloc(sizeof(node))2)print->printf,scan->scanfi如果编译器报告语法错误,请显示确切的消息。否。没有由编译器引起的语法错误。当代码上载到stackoverflow时,typedef、变量名等出现错误。如果没有语法错误,那么为什么在问题中提到语法错误??请澄清一下,您真的有宏m
来替换malloc
和print
ro替换printf
?那是自找麻烦。很多麻烦。
Insert(st, 2)
Step 1: Let p be a pointer to the root of st, which is node 1
1 <- p
/ \
NULL NULL
Step 2: Because (*p)->data == 1 < 2, we move to the right (p = &((*p)->right)) and have *p == NULL
1
/ \
NULL NULL <- p
Now we have p point to to the new node n: *p = n
1
/ \
NULL n
And have now added n into our tree successfully.