请高手调试程序!
[code=#include<stdio.h>
#include <stdlib.h>
#include<string.h>
typedef struct node
{
int d;
struct node * right,*left;
}treenode;
typedef treenode * ptree;
int index=1;
inputdata(int *a)
{
int node;
printf("please input data:");
scanf("%d",&node);
while(node!=0)
{
a[index]=node;
index++;
scanf("%d",&node);
}
}
inorder(ptree root)
{
if (root!=NULL)
{
inorder(root->left);
printf("%d ",root->d);
inorder(root->right);
}
}
ptree createtree(int *list,int position)
{
ptree newnode;
if(list[position]==0||position>index-1)
return NULL;
else
{
newnode=(ptree)malloc (sizeof(treenode));
newnode->d=list[position];
newnode->left=createtree(list,2*position);
newnode->right=createtree(list,2*position+1);
return newnode;
}
}
main(void)
{
int a[100];
ptree root=NULL;
inputdata(a);
root=createtree(a,1);
inorder(root);
}
C/C++][/code]
该程序是二叉树的递归建立,中序遍历输出,但是输出不对!望大家看看是为什么!!!
[解决办法]
我的代码
#include<stdlib.h>struct tree //声明树的结构{ struct tree *left; int data; struct tree *right;};typedef struct tree treenode;type treenode *b_tree; //声明二叉树链表//插入二叉树的节点b_tree insert_node(b_tree root,int node){ b_tree newnode; b_tree currentnode; b_tree parentnode; newnode=(b_tree)malloc(sizeof(treenode)); //建立新节点的内存空间 newnode->data=node; newnode->right=NULL; newnode->left=NULL; if(root=NULL) return newnode; else { currentnode=root; while(currentnode!=NULL) { parentnode=currentnode; if( currentnode->data>node) currentnode=currentnode->left; else currentnode=currentnode->right; } if(parentnode->data>node) parentnode->left=newnode; else parentnode->right=newnode; } return root;}// 建立二叉树b_tree create_btree(int *data,int len){ b_tree root=NULL; int i; for(i=0;i<len;i++) root=insert_node(root,data[i]); return root;}//二叉树中序遍历void inorder(b_tree point){ if(point!=NULL) { inorder(point->left); printf("%d",point->data); inorder(point->right); }}//主程序void main( ){ b_tree root=NULL; int i,index; int value; int nodelist[20]; printf("\n pleaase input the elements of binary tree(exit for 0 ):\n"); index=0; //读取数值存到数组中 scanf("%d",&value); while(value!=0) { nodelist[index]=value]; index=index+1; scanf("%d",&value); } //建立二叉树 root=create_btree(nodelist,index); //中序遍历二叉树 printf("\nThe inorder traversal result is :"); inorder(root); printf("\n");}