二叉树的建立,从动态二叉链表转化为静态二叉链表
2016-11-30 23:20
357 查看
动态二叉链表
typedef char
4000
ElemType;
typedef struct BiNode
{
ElemType data;
struct BiNode *lchild;
struct BiNode *rchild;
}BiNode,*Bitree;
typedef struct
{
ElemType data;
int lchild;
int rchild;
}BiTr;
热茶树的建立采用递归的方法
void createBiTree(BiTree &T)
{
ElemType ch='0';
printf("请输入字符!\n");
if(!flag)
{
ch=getchar();
getchar();
}
else
{
printf("结束输入\n");
T=NULL;
return;
}
if(ch=='#')
{
flag=1;
T=NULL;
return ;
}
else
{
T=(BiTree)malloc(sizeof(BiTNode));
if(T==NULL)
{
printf("系统空间不足\n");
exit(-1);
}
T->data=ch;
createBiTree(T->lchild);
printf("-------------------------\n");
createBiTree(T->rchild);
}
}
静态二叉树的建立通过遍历动态二叉树来建立
二叉树转化函数
void turn(BiTree &T1,BiTr &T2,int i)
{
int t=i;
if(T1)
{
T2[t].data=T1->data;
if(T1->lchild==NULL)
T2[t].lchild=0;
else
T2[t].lchild=++tg;
if(T1->rchild==NULL)
T2[t].rchild=0;
else
T2[t].rchild=++tg;
if(T1->lchild!=NULL)
turn(T1->lchild,T2,i+1);
if(T1->rchild!=NULL)
turn(T1->rchild,T2,i+1);
}
}
typedef char
4000
ElemType;
typedef struct BiNode
{
ElemType data;
struct BiNode *lchild;
struct BiNode *rchild;
}BiNode,*Bitree;
typedef struct
{
ElemType data;
int lchild;
int rchild;
}BiTr;
热茶树的建立采用递归的方法
void createBiTree(BiTree &T)
{
ElemType ch='0';
printf("请输入字符!\n");
if(!flag)
{
ch=getchar();
getchar();
}
else
{
printf("结束输入\n");
T=NULL;
return;
}
if(ch=='#')
{
flag=1;
T=NULL;
return ;
}
else
{
T=(BiTree)malloc(sizeof(BiTNode));
if(T==NULL)
{
printf("系统空间不足\n");
exit(-1);
}
T->data=ch;
createBiTree(T->lchild);
printf("-------------------------\n");
createBiTree(T->rchild);
}
}
静态二叉树的建立通过遍历动态二叉树来建立
二叉树转化函数
void turn(BiTree &T1,BiTr &T2,int i)
{
int t=i;
if(T1)
{
T2[t].data=T1->data;
if(T1->lchild==NULL)
T2[t].lchild=0;
else
T2[t].lchild=++tg;
if(T1->rchild==NULL)
T2[t].rchild=0;
else
T2[t].rchild=++tg;
if(T1->lchild!=NULL)
turn(T1->lchild,T2,i+1);
if(T1->rchild!=NULL)
turn(T1->rchild,T2,i+1);
}
}
相关文章推荐
- 二叉树-----动态二叉链表-----建立(先序)+遍历(7种)
- 二叉树的的所有操作——转化为静态二叉链表,求深度,求先序排列,求中序排列,求后序排列,求层次遍历,求度为0.1.2的节点个数
- 二叉树-----静态二叉链表(游标)-----建立(先序)+遍历(7种)
- C++类型转化分析:强制转换,动态转换,静态转换等。
- 数据结构_树_二叉树的建立、遍历、复制与移除_二叉链表存储_C++实现
- 动态二叉链表的遍历和转换成静态二叉链表
- 数据结构——已知先序和中序序列,建立二叉树的二叉链表
- asp的动态转化为静态的代码
- (1)建立二叉树的二叉链表。 (2)写出对用二叉链表存储的二叉树进行先序、中序和后序遍历的递归和非递归算法。 (3)写出对用二叉链表存储的二叉树进行层次遍历算法。 (4)求二叉树的所有叶子及结点总数。
- c++中对象动态建立与静态建立的区别和应用
- 二叉树的先序,中序,和后序遍历用静态和动态两种方法实现
- 树型结构2 AVL 森林与二叉树转化 二叉链表三种遍历
- 【数据结构作业四】以二叉链表作存储结构,建立一棵二叉树,并输出该二叉树的先序、中序、后序遍历序列、高度和其叶子结点数。
- 动态文件转化为静态文件
- 建立线索二叉链表结构,实现二叉树的中序线索化及中序线索二叉树的遍历算法
- 输入完全二叉树的先序序列,用#代表虚结点(空指针),如ABD###CE##F##,建立二叉树的二叉链表。 (2)写出对用二叉链表存储的二叉树进行先序、中序和后序遍历的递归和非递归算法。 (3)写出
- 建立二叉树的二叉链表
- 建立WIN32 DLL,并使用静态加载和动态加载
- 二叉树采用二叉链表结构表示。设计并实现如下算法:输入某棵二叉树的广义表形式,建立该二叉树,并按层次遍历该二叉树。
- 分别使用静态数组与动态数组建立一个区域 - 回复 "老A123" 的问题