数模论坛

 找回密码
 注-册-帐-号
搜索
热搜: 活动 交友 discuz
查看: 4717|回复: 3

[求助]二叉树的C语言编程

[复制链接]
发表于 2005-10-30 01:27:49 | 显示全部楼层 |阅读模式
<>#include"stdio.h"<BR>#include"stdlib.h"<BR>typedef struct BiTNode{<BR>char data;<BR>struct BiTNode *lchild;<BR>struct BiTNode *rchild;<BR>}BiTNode,BiTree;<BR>BiTree *root;<BR>int n=0;<BR>BiTree *creat()<BR>{BiTree *bt,*p,*s[30];int i,j,x;<BR>printf("i,x=");scanf("%d%d",&amp;i,&amp;x);<BR>while((i!=0)&amp;&amp;(x!=0))<BR>{if((p=(BiTNode *)malloc(sizeof(BiTNode)))==NULL) return  NULL;<BR>p-&gt;data=x;p-&gt;lchild=NULL;p-&gt;rchild=NULL;<BR>s=p;<BR>if(i==1) bt=p;<BR>else{j=i/2;<BR>if((i%2)==0) s[j]-&gt;lchild=p;<BR>else s[j]-&gt;rchild=p;<BR>}<BR>printf("i,x=");scanf("%d%d",&amp;i,&amp;x);}<BR>return (bt);<BR>}<BR>void inorder(BiTree *bt)<BR>{if(bt==NULL) return;<BR>inorder(bt-&gt;lchild);<BR>printf("%d\t",bt-&gt;data);<BR>inorder(bt-&gt;rchild);<BR>}<BR>void main()<BR>{printf("create a tree:");<BR>root=creat();<BR>printf("travel:");<BR>inorder(BiTree *root);<BR>}</P>
<>怎么老是有一个ERROR呢?</P>
发表于 2005-10-31 02:23:19 | 显示全部楼层
<>兄弟,我用C++修改了你若干部分,仍保留你设计算法的初衷。No Error!</P>
<><FONT color=#0000ff>#include &lt;iostream&gt;<BR>#include &lt;cstdlib&gt;<BR>using namespace std;</FONT></P>
<><FONT color=#0000ff>struct BiTree<BR>{<BR> int data;<BR> struct BiTree *lchild;<BR> struct BiTree *rchild;<BR>};</FONT></P>
<P><FONT color=#0000ff>BiTree *creat()<BR>{<BR> BiTree *bt = NULL,*p,*s[30];<BR> int i,j,x;<BR> cout &lt;&lt; "i, x = " ;<BR> cin &gt;&gt; i &gt;&gt; x;<BR> while(i != 0)<BR> {<BR>  p = new BiTree;<BR>  p-&gt;data = x;p-&gt;lchild = NULL;p-&gt;rchild = NULL;<BR>  s = p;<BR>  if(i==1) bt = p;<BR>  else<BR>  {<BR>   j=i/2;<BR>   if((i%2)==0) s[j]-&gt;lchild = p;<BR>   else s[j]-&gt;rchild = p;<BR>  }<BR>  cout &lt;&lt; "i, x = " ;<BR>  cin &gt;&gt; i &gt;&gt; x;<BR> }<BR> return bt;<BR>}</FONT></P>
<P><FONT color=#0000ff>void inorder(BiTree *bt)<BR>{<BR> if(bt==NULL) return;<BR> inorder(bt-&gt;lchild);<BR> cout &lt;&lt; bt-&gt;data &lt;&lt; '\t';<BR> inorder(bt-&gt;rchild);<BR>}</FONT></P>
<P><FONT color=#0000ff>void main()<BR>{<BR> BiTree *root;<BR> cout &lt;&lt; "create a tree";<BR> root=creat();<BR> cout &lt;&lt; "travel:" ;<BR> inorder(root);<BR>}</FONT></P>
<P><FONT color=#0000ff></FONT> </P>
发表于 2005-10-31 02:30:19 | 显示全部楼层
<>C语言版的如下:</P>
<><FONT color=#2b4dd5>#include"stdio.h"<BR>#include"stdlib.h"</FONT></P>
<><FONT color=#2b4dd5>typedef struct BiTNode<BR>{<BR> int data;<BR> struct BiTNode *lchild;<BR> struct BiTNode *rchild;<BR>}BiTNode,BiTree;</FONT></P>
<P><FONT color=#2b4dd5>BiTree *root;<BR>//int n=0;</FONT></P>
<P><FONT color=#2b4dd5>BiTree *creat()<BR>{<BR> BiTree *bt,*p,*s[30];<BR> int i,j,x;<BR> printf("i,x=");scanf("%d%d",&amp;i,&amp;x);<BR> while((i!=0)&amp;&amp;(x!=0))<BR> {<BR>//  if((p=(BiTNode *)malloc(sizeof(BiTNode)))==NULL) return  NULL;<BR>  p=(BiTNode *)malloc(sizeof(BiTNode));<BR>  p-&gt;data=x;p-&gt;lchild=NULL;p-&gt;rchild=NULL;<BR>  s=p;<BR>  if(i==1) bt=p;<BR>  else<BR>  {<BR>   j=i/2;<BR>   if((i%2)==0) s[j]-&gt;lchild=p;<BR>   else s[j]-&gt;rchild=p;<BR>  }<BR>  printf("i,x=");scanf("%d%d",&amp;i,&amp;x);<BR> }<BR> return (bt);<BR>}</FONT></P>
<P><FONT color=#2b4dd5>void inorder(BiTree *bt)<BR>{<BR> if(bt==NULL) return;<BR> inorder(bt-&gt;lchild);<BR> printf("%d\t",bt-&gt;data);<BR> inorder(bt-&gt;rchild);<BR>}</FONT></P>
<P><FONT color=#2b4dd5>void main()<BR>{<BR> printf("create a tree:");<BR> root=creat();<BR> printf("travel:");<BR> inorder(root);<BR>}</FONT></P>
发表于 2005-11-6 16:51:40 | 显示全部楼层

bt可能值不确定,怎么返回

if(i==1) bt=p;<BR>else{j=i/2;<BR>if((i%2)==0) s[j]-&gt;lchild=p;<BR>else s[j]-&gt;rchild=p;<BR>}<BR>bt没赋值,又有可能没值,怎么返回?
您需要登录后才可以回帖 登录 | 注-册-帐-号

本版积分规则

小黑屋|手机版|Archiver|数学建模网 ( 湘ICP备11011602号 )

GMT+8, 2024-11-27 06:12 , Processed in 0.058574 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表