C语言 将二叉树转化为静态数组

C语言 将二叉树转化为静态数组

ID:37915958

大小:34.50 KB

页数:4页

时间:2019-06-02

C语言 将二叉树转化为静态数组_第1页
C语言 将二叉树转化为静态数组_第2页
C语言 将二叉树转化为静态数组_第3页
C语言 将二叉树转化为静态数组_第4页
资源描述:

《C语言 将二叉树转化为静态数组》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、//C语言,将动态二叉树转化为静态数组#include#include//建立二叉树structtreenode*createBiTree(structtreenode**p,intx);//显示二叉树voidtraverse(structtreenode*p);//获取二叉树总的节点数并返回intnodeNum(structtreenode*p);//初始化数组的data数据,并使二叉树里面的arrayorder数据与数组下标一致voidinitArray(structtreenode*p);

2、//将二叉树转化为数组voidtransform(structtreenode*p);structtreenode{intdata;structtreenode*left,*right;intarrayorder;//转化为数组之后该节点在数组里的元素下标};structtreenode*createBiTree(structtreenode**p,intx){if(*p==NULL){*p=(structtreenode*)malloc(sizeof(structtreenode));if(*p==NULL){printf("ou

3、tofmemory,pressanykeytoquit...");exit(0);}(*p)->data=x;(*p)->left=(*p)->right=NULL;(*p)->arrayorder=0;}elseif(x<(*p)->data)createBiTree(&(*p)->left,x);elsecreateBiTree(&(*p)->right,x);return(*p);}staticintlength=0;intnodeNum(structtreenode*p){if(p!=NULL){length++;nod

4、eNum(p->left);nodeNum(p->right);}returnlength;}voidtraverse(structtreenode*p){if(p!=NULL){printf("%d",p->data);traverse(p->left);traverse(p->right);}}structtreeArray{intdata;intlchild,rchild;};staticstructtreeArray*a=NULL;//转化之后的数组staticintnum=0;voidinitArray(structtre

5、enode*p){if(p!=NULL){a[num].data=p->data;p->arrayorder=num;num++;initArray(p->left);initArray(p->right);}}staticinti=0;voidtransform(structtreenode*p){if(p!=NULL){if(p->left!=NULL)a[i].lchild=p->left->arrayorder;if(p->right!=NULL)a[i].rchild=p->right->arrayorder;i++;tr

6、ansform(p->left);transform(p->right);}}voidmain(void){intx;structtreenode*root=NULL;//建立二叉树链表printf("输入数据以"ctrl+z"结束:");while(scanf("%d",&x)!=EOF)createBiTree(&root,x);printf("先序输出二叉树:");traverse(root);//输出二叉链表printf("");//动态分配跟二叉树节点个数一样的静态数组length=nodeNum(root);

7、a=(structtreeArray*)malloc(sizeof(structtreeArray)*length);if(a==NULL){printf("outofmemory,pressanykeytoquit...");exit(0);}//用0初始化数组for(inti=0;i

8、为:");printf("下标datalchildrchild");for(intj=0;j

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。