将一棵二叉树的所有结点存储在一维数组中,虚结点用#表示,利用性质5
来源:互联网 发布:sql server guid 编辑:程序博客网 时间:2024/05/17 22:54
#include <stdio.h>#include <stdlib.h>typedef struct BTNode{char data;struct BTNode *lchild,*rchild;}BTNode,*BiTree;#define MAX 100typedef struct CQueue{BiTree *base;int front;int rear;}CQueue;void InitQueue(CQueue &q){//初始化一个队列q.base = (BiTree *)malloc(sizeof(BiTree) * MAX);if(!q.base) exit(0);q.front = q.rear = 0;}//InitQueuevoid EnQueue(CQueue &q,BiTree bt){//数据进队if( ((q.rear + 1)%MAX) == q.front) exit(0);q.base[q.rear] = bt;q.rear = (q.rear + 1)%MAX;}//EnQueueint QueueEmpty(CQueue q){//判断是否为空return q.front == q.rear? 1:0;}void DeQueue(CQueue &q,BiTree &bt){//出队列if(QueueEmpty(q)) exit(0);bt = q.base[q.front];q.front = (q.front +1 )%MAX;}//DeQueuevoid CreatBiTree(BiTree &bt,char Data[],int n){//③ 将一棵二叉树的所有结点存储在一维数组中,虚结点用#表示,//利用二叉树的性质5,建立二叉树的二叉链表。//例如用数组a存储的二叉树的结点如下(0单元不用):CQueue Q;int Qn[MAX],f,r,i;BiTree p;if(n<1){bt = NULL;return;}bt = (BiTree)malloc(sizeof(BTNode));bt ->data = Data[1];InitQueue(Q); EnQueue(Q,bt);f = r = 0;Qn[r++]=1;while(!QueueEmpty(Q)){DeQueue(Q,p); i=Qn[f++];if(2*i > n || Data[2*i] == '#')p->lchild = NULL;else{p->lchild = (BiTree)malloc(sizeof(BTNode));p->lchild->data = Data[2*i];EnQueue(Q,p->lchild);Qn[r++] = 2*i;}if(2*i+1 > n || Data[2*i+1] == '#')p->rchild = NULL;else{p->rchild = (BiTree)malloc(sizeof(BTNode));p->rchild->data = Data[2*i+1];EnQueue(Q,p->rchild);Qn[r++] = 2*i+1;}}}void PreOrderTraverse1(BiTree bt){if(bt){printf("%3c",bt->data);PreOrderTraverse1(bt->lchild);PreOrderTraverse1(bt->rchild);}}void main(){BiTree bt;int n;scanf("%d",&n);CreatBiTree(bt,"#ABC#D#E",n);//结点个数为字符串个数减一PreOrderTraverse1(bt);}
0 0
- 将一棵二叉树的所有结点存储在一维数组中,虚结点用#表示,利用性质5
- 6.33③ 假定用两个一维数组L[1..n]和R[1..n]作为 有n个结点的二叉树的存储结构, L[i]和R[i]分别指 示结点i的左孩子和右孩子,0表示空。试写一个算法 判别结点u是否为结点v的
- 在含有父结点指针的二叉树中找到一个结点的后继结点
- 二叉树的结点度表示法
- 计算二叉树中所有结点数的算法
- 求二叉树中所有结点的个数
- 求二叉树中结点的最大值(所有结点的值都是正整数)
- 输出二叉树中所有从根结点到叶子结点的路径
- 输出二叉树中所有从根结点到叶子结点的路径
- 输出二叉树中所有从根结点到叶子结点的路径
- 二叉树中从根结点到叶子结点的所有路径(递归实现)
- 二叉树两结点的最低公共祖先结点(一)
- 二叉树求两个结点的父节点及一个结点的所有祖先结点
- 求出一个排序二叉树中结点度数为一的结点个数
- 二叉树的下一结点
- 在二叉树中找值为x的结点(假设所有结点的值都不一样)
- 在二叉树中找值为x的结点(假设所有结点的值都不一样)
- 数据结构二叉树的实现(#表示空结点)
- 使用python访问网站遇到的问题
- Android Windows悬浮窗
- EditPlus如何开启Emmet插件
- 测试详细分类、测试流程、测试阶段、测试模型、测试工具
- Dialog和Popupwindow的区别
- 将一棵二叉树的所有结点存储在一维数组中,虚结点用#表示,利用性质5
- 基本选择器
- tipsforjade
- 子查询(一)创建表
- iOS UI设计: 在Autolayout自适应的情况下tableviewcell高度自适应
- Linux常用命令大全
- Lie群、Lie代数
- 赶在今天过去之前
- iOS NSNotificationCenter的简单使用