【发布时间】:2012-11-26 10:20:42
【问题描述】:
typedef struct node
{
int data;
struct node *next,*prev;
}harsha;
void create_leaf(harsha **pnode,int value)
{
harsha *temp=*pnode;
if(*pnode==NULL)
{
*pnode=(struct node *)malloc(sizeof(struct node));
if(!(*pnode))
{
printf("mem not allocated");
exit(0);
}
(*pnode)->data=value;
(*pnode)->prev=NULL;
(*pnode)->next=NULL;
}
else
{
if(value>(temp->data))
create_leaf(&(temp->next),value);
else if(value<temp->data)
create_leaf(&(temp->prev),value);
}
}
这是我为将新节点插入二叉搜索树而编写的函数。我的代码是否有任何问题,因为我的 Inorder、Preorder 和 Postorder 遍历无法正常工作。
【问题讨论】:
-
究竟是什么问题?解决“不能正常工作”非常困难......
-
void Inorder_traversal(harsha *pnode) { if(pnode!=NULL) { Inorder_traversal(pnode->prev); printf("%d\t",pnode->data); Inorder_traversal(pnode->next); } else return; }是我的 Inorder 函数,如果输入是 5 4 8。它正在打印 4 5 8,后面跟着一些大数字,程序停止工作,没有转到其他函数 postorder 和 Preorder
标签: c binary-search-tree