我正在尝试使用struct在C ++中创建二叉搜索树。在此代码中,' inorder'功能不起作用。我的代码如下:
#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
struct node{
struct node *left, *right,*root;
int data,count;
}*new_node,*tree, *temp,*ruff;
void root_create(){
tree = (struct node *)malloc(sizeof(struct node));
tree->root = NULL;
tree->count=0;
}
void node_create(int data){
new_node = (struct node *)malloc(sizeof(struct node));
new_node->data = data;
new_node->left=NULL;
new_node->right=NULL;
}
node * node_insert(node *tree){
temp = tree->root;
if(temp==NULL){
temp = new_node;
temp->count++;
return temp;
}
else if(temp->left==NULL and temp->right==NULL){
if(temp->data > new_node->data){
tree->root->left = new_node;
}
else if(tree->root->data <= new_node->data){
tree->root->right = new_node;
}
temp->count++;
return temp;
}
else{
if(temp->data <= new_node->data){
return node_insert(temp->right);
}
if(temp->data > new_node->data){
return node_insert(temp->left);
}
}
}
void inorder(node *){
if(ruff == NULL){
cout<<"No Data!"<<endl;
return;
}
if(ruff->left!=NULL){
inorder(ruff->left);
}
cout<< ruff->data<<endl;
if(ruff->right!=NULL){
inorder(ruff->right);
}
cout<< ruff->data<<endl;
}
int main()
{
int data=321;
root_create();
node_create(data);
tree->root = node_insert(tree);
data=123;
node_create(data);
tree->root = node_insert(tree);
ruff = tree->root;
inorder(tree);
return 0;
}
在main函数中,我创建了两个节点并将它们附加到tree-&gt; root。我可以从tree-&gt; root访问数据。但是当我调用inorder函数时,它没有显示任何输出。
答案 0 :(得分:1)
您正在使用静态变量&#34; ruff&#34;在你的inorder函数中,而不是传递的参数,你已经忽略了这个参数。
当你使用它时,inorder()函数非常简单:
为了使递归结束,如果传入的节点*为NULL,则需要从inorder()中提前退出。