关于二叉树,用c语言怎么解决,创建二叉树

#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
char data;
node * lchild,* rchild;
}Tnode;
void Creat_T(Tnode * T);
int main()
{
Tnode * T;
printf("1----------------创建二叉树----------------------\n");
printf("2----------------先序遍历二叉树------------------\n");
printf("3----------------中序遍历二叉树------------------\n");
printf("4----------------后序遍历二叉树------------------\n");
printf("5----------------层序遍历二叉树------------------\n");
printf("6----------------求二叉树的深度------------------\n");
printf("7----------------退出----------------------------\n");
Creat_T(T);
return 0;
}
void Creat_T(Tnode * T)//创建二叉树
{
char s;
scanf("%d",&s);
if(s=='#')
T=NULL;
else
{
T=(Tnode *)malloc(sizeof(Tnode));
T->data=s;
Creat_T(T->lchild);
Creat_T(T->rchild);
printf("创建二叉树成功\n");
}
}

参考一下如下代码吧,这时创建一排序二叉树树,并中序输出,关键是看一下insert这个函数

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

//|=================================
//| Define BiTNode struct
//|=================================
typedef struct BiTNode    
{      
 int data;      
 struct BiTNode *lchild,*rchild;    
}BiTNode,*BiTree;
void inseart(BiTree * root,int data)
{
 //初始化插入结点
 BiTree p=(BiTree)malloc(sizeof(BiTNode));
 p->data=data;
 p->lchild=p->rchild=NULL;
 //空树时,直接作为根结点
 if((*root)==NULL){
  *root=p;
  return;
 }
 //插入到当前结点(*root)的左孩子
 if((*root)->lchild == NULL && (*root)->data > data){
        (*root)->lchild=p;
  return;
 }
 //插入到当前结点(*root)的右孩子
 if((*root)->rchild == NULL && (*root)->data < data){
        (*root)->rchild=p;
  return;
 }
 if((*root)->data > data)
  inseart(&(*root)->lchild,data);
 else if((*root)->data < data)
  inseart(&(*root)->rchild,data);
 else
  return;
}
void InOrderTraverse(BiTree t)
{  
 if(t == NULL)    
  return;    
 InOrderTraverse(t->lchild);  
 printf("%d ",t->data);  
 InOrderTraverse(t->rchild);
}
int main()
{
 //|=================================
 //|Function:Insert a value to Bi Tree
 //|=================================
 int i;
 int test[]={62,88,58,47,35,73,51,99,37,93};
 BiTree T = NULL;
 for(i=0;i<10;i++)  
  inseart(&T,test[i]);  
 printf("Before sort\n");
 for (i=0;i<10;i++)  
  printf("%d ",test[i]);  
 printf("\n");
 printf("After Bi Tree sorted\n");
  InOrderTraverse(T);    
 system("pause");
 return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-12-16
scanf("%c",&s); //字符输入用%c %d是int