博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二叉树与数组
阅读量:5217 次
发布时间:2019-06-14

本文共 1785 字,大约阅读时间需要 5 分钟。

1.将二叉树转换为顺序存储结构,按完全二叉树形式存储,无元素的结点当做虚结点。按层次顺序遍历二叉树,设根结点编号为0,设置一队列,将结点及其序号入队。出队时将结点及其编号写入顺序存储结构。

#include "stdafx.h"#include
using namespace std;typedef struct BTreeNode{ int data; struct BTreeNode *lchild,*rchild;}BTree;int _tmain(int argc, _TCHAR* argv[]){ return 0;}typedef struct{ BTree *node; int num;}tnode;void BTreeToSeqt(BTree *t,char s[]){ tnode q[100]; tnode tq; int front=0,rear=0; BTree *p; if(t==NULL)exit(0); for(int i=0;i<100;i++) { s[i]='#';//虚结点 tq.node=t;tq.num=1;q[++rear]=tq;//根结点入队 while(front
data; if(p->lchild)//左子女入队 { tq.node=p->lchild; tq.num=2*i; q[++rear]=tq; } if(p->rchild)//右子女入队 { tq.node=p->rchild; tq.num=2*i+1; q[++rear]=tq; } } }}

 2.顺序结构建立二叉树,有些结点是虚结点

#include "stdafx.h"#include
using namespace std;typedef struct BTreeNode{ int data; struct BTreeNode *lchild,*rchild;}BTree;int _tmain(int argc, _TCHAR* argv[]){ return 0;}typedef struct{ BTree *node; int num;}tnode;void create(BTree *t,char s[],int length)//length为二叉树数组长度{ tnode q[100]; tnode tq; int front=0,rear=0; t=(BTree*)malloc(sizeof(BTreeNode)); t->data=s[0];//根结点存在s[0] tq.node=t;tq.num=1; q[0]=tq;//入队 while(front!=rear) { front++; tq=q[front]; BTree *p=tq.node; int i=tq.num;//出队,取出结点及编号 if(2*i>length||s[2*i]=='#')//左子树为空 { p->lchild=NULL; } else { p->lchild=(BTree*)malloc(sizeof(BTreeNode)); p->lchild->data=s[2*i]; tq.node=p->lchild;tq.num=2*i; rear++; q[rear]=tq;//左子女结点及其编号入队 } if(2*i+1>length||s[2*i+1]=='#')//右子树为空 { p->rchild=NULL; } else { p->rchild=(BTree*)malloc(sizeof(BTreeNode)); p->rchild->data=s[2*i+1]; tq.node=p->rchild;tq.num=2*i+1; rear++; q[rear]=tq;//右子女结点及其编号入队 } }}

 

转载于:https://www.cnblogs.com/tgkx1054/archive/2012/08/16/2643140.html

你可能感兴趣的文章
Combination Sum III -- leetcode
查看>>
中国剩余定理
查看>>
基础笔记一
查看>>
uva 10137 The trip
查看>>
spring 解决中文乱码问题
查看>>
hdu 4268
查看>>
Count Numbers
查看>>
编写高质量代码改善C#程序的157个建议——建议110:用类来代替enum
查看>>
网卡bond技术
查看>>
UITabbarController的UITabbarItem(例:"我的")点击时,判断是否登录
查看>>
UNIX基础知识之输入和输出
查看>>
【洛谷 P1666】 前缀单词 (Trie)
查看>>
对称加密和非对称加密
查看>>
数据库锁机制及乐观锁,悲观锁的并发控制
查看>>
图像处理中双线性插值
查看>>
RobHess的SIFT代码解析之RANSAC
查看>>
03 线程池
查看>>
201771010125王瑜《面向对象程序设计(Java)》第十三周学习总结
查看>>
java中内部类的讲解
查看>>
手机验证码执行流程
查看>>