数据结构实验之二叉树的遍历
来源:互联网 发布:掌上电力网络有问题 编辑:程序博客网 时间:2024/05/23 11:56
【实验内容】
创建一个二叉树,对这棵动态二叉树进行分析,将其用静态二叉链表表示。二叉树的动态二叉链表结构中的每个结点有三个字段:data,lchild,rchild。静态二叉链表是用数组作为存储空间,每个数组元素存储二叉树的一个结点,也有三个字段:data,lchild,rchild。lchild和rdhild分别用于存储左右孩子的下标。
【实验源码】:
#include<stdio.h>#include<stdlib.h>//二叉树结点定义typedef struct BITNode{char data;struct BITNode *lchild,*rchild;}BITNode,*BITree;static int length=0;//二叉树结点个数//静态二叉链表typedef struct ATNode{char data;int lchild;int rchild;}ATNode;ATNode Array[100];//存储二叉链表结点//先序创建二叉树void CreateBITree(BITree *T){char ch;scanf("%c",&ch);if(ch=='#')*T=NULL;else{*T=(BITree )malloc(sizeof(BITNode)); (*T)->data=ch;CreateBITree(&((*T)->lchild));CreateBITree(&((*T)->rchild));}}//先序遍历二叉树void VisitBitree(BITree T){if(T){printf("%c->",T->data); length++;Array[length].data=T->data;VisitBitree(T->lchild);//访问左孩子VisitBitree(T->rchild);//访问右孩子}}//二叉树转化为静态二叉链表void BitreeTransform(BITree T){int i,j;if(T){j=1; while(T->data!=Array[j].data)j++;//确定T结点的数组下标if(T->lchild!=NULL){i=1;while(T->lchild->data!=Array[i].data)i++;//确定T->lchild结点的数组下标 Array[j].lchild=i;}elseArray[j].lchild=0;if(T->rchild!=NULL){i=1;while(T->rchild->data!=Array[i].data)i++;//确定T->rchild结点的数组下标 Array[j].rchild=i;}elseArray[j].rchild=0;BitreeTransform(T->lchild);BitreeTransform(T->rchild);}}void main (){printf("请先序方式输入二叉树的节点值:\n");BITree T=NULL;//T为空二叉树CreateBITree(&T);//创建一棵二叉树printf("按先序次序输出二叉树节点中的值:\n"); VisitBitree(T);printf("\n\n"); BitreeTransform(T);printf("二叉树的静态二叉链表为:\n");printf("下标\tlchil\tddata\trchild\n");for(int j=1;j<=length;j++) { printf("%d\t%d\t%c\t%d\n", j,Array[j].lchild, Array[j].data, Array[j].rchild); } printf("二叉静态链表长度:%d\n",length);}
1 0
- 数据结构实验之二叉树的遍历
- 二叉树的遍历:数据结构实验之二叉树二:遍历二叉树
- [C++ 二叉树的构建与遍历] 数据结构实验之二叉树二:遍历二叉树
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 2136 数据结构实验之二叉树的建立与遍历
- 2136 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- sdutoj2136 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立于遍历
- 数据结构实验之二叉树的建立与遍历
- 安卓基础:HttpURLConnection的使用
- 巴蜀1359 后缀数组
- 人生的价值与困惑
- 6.824: Distributed Systems 课程讲义2
- Content Provider 内容提供器
- 数据结构实验之二叉树的遍历
- Sequence(优先队列)
- xml
- JavaWeb项目一些常见问题
- 小马哥---高仿三星note7 主板型号I8000 6580芯片刷机拆机主板图与开机界面图
- servlet
- 无向图的深度优先搜索
- cookie,session,https,代理原理详解
- Linux编程:进程间通信--管道