求教,二叉链表创建二叉树总有问题,谢谢

来源:互联网  时间:2016/7/23 15:36:51

关于网友提出的“ 求教,二叉链表创建二叉树总有问题,谢谢”问题疑问,本网通过在网上对“ 求教,二叉链表创建二叉树总有问题,谢谢”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 求教,二叉链表创建二叉树总有问题,谢谢
描述:

typedef int TElemType;
typedef int Status;
//二叉树结构体
typedef struct BiTNode
{ TElemType data;//结点的值
  BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
void InitBiTree(BiTree &T)
{ T=NULL;
}
TElemType Root(BiTree T)
{ //返回二叉树的根结点
if(BiTreeEmpty(T))
return NULL;
else
return T->data;
}
void CreateBiTree(BiTree &T)        //利用这个函数创建的二叉树每个结点为什么只有左子树呢,而没有右子树呢??
{  TElemType ch;
   
   scanf("%d",&ch);//输入结点的值
   if(ch==0)//结点为空
   T=NULL;
   else
   {T=(BiTree)malloc(sizeof(BiTNode));
   //生成根结点
   if(!T)
     exit(OVERFLOW);
   T->data=ch;//将值赋给T所指结点
 
   CreateBiTree(T->lchild);//递归构造左子树
   CreateBiTree(T->rchild);
 } 
  
}
main()
{ int i;
BiTree T,p,c;
TElemType e1,e2,e3;
InitBiTree(T);//初始化二叉树CreateBiTree(T);//建立二叉树T
printf("构造二叉树后,树空否?%d(1,是,0否).树的深度=%d.\n",BiTreeEmpty(T),BiTreeDepth(T));
e1=Root(T);//e1为二叉树T的根结点的值
e2=LeftChild(T,e1);
printf("左孩子:%d",e2);
e3=RightChild(T,e1);
printf("右孩子:%d",e3);
}


解决方案1:

理解错了~~~~~~

解决方案2:

引用 2 楼 wsllittlebird 的回复:
你的二叉树创建的没有问题 可能你不知道怎么输入
比如对于这样的二叉树,你应该这样输入
2 3 5 9 0 0 0 1 0 0 4 7 0 0 2 0 0
可能你不太理解二叉树的建立过程,看看这个

晕,第一个图片没传好 求教,二叉链表创建二叉树总有问题,谢谢解决方案3:

你的二叉树创建的没有问题 可能你不知道怎么输入
比如对于这样的二叉树,你应该这样输入 求教,二叉链表创建二叉树总有问题,谢谢
2 3 5 9 0 0 0 1 0 0 4 7 0 0 2 0 0 
可能你不太理解二叉树的建立过程,看看这个
 求教,二叉链表创建二叉树总有问题,谢谢

解决方案4:

是不是程序里创建完左子树后
if(!T) 
    exit(OVERFLOW); 
就退出了

上一篇qiu求个算法
下一篇请前辈推荐东西
明星图片
相关文章
《 求教,二叉链表创建二叉树总有问题,谢谢》由码蚁之家搜集整理于网络,
联系邮箱:mxgf168#qq.com(#改为@)