暑假集训 二叉树 大话数据结构上讲的
2017-07-13 17:30
399 查看
二叉树两种存储结构 顺序存储和链式存储 顺序
二叉树遍历分为 前序遍历 中序遍历 后序遍历 层次遍历 #include <iostream>
#include <stdlib.h>
#include<string>
#include<cstdio>
using namespace std;
typedef struct bitnode
{
struct bitnode* leftchild; // 指针 注意 typedef 创建一个指针
struct bitnode* rightchild;
char data;
}bitnode,*bitree;
void creattree(bitree &t) // 用递归建立二叉树 输入#为没有数据
{
char ch;
cin>>ch;
if(ch=='#')
t=NULL;
else
{
t=(bitnode *)malloc(sizeof(bitnode));
t->data=ch; //
t->leftchild=new bitnode;
t->rightchild=new bitnode;
creattree((t)->leftchild);
creattree((t)->rightchild);
}
}
void preorder(bitree t)
{
if((t)!=NULL)
{
cout<<(char)t->data;
if(t->leftchild!=NULL)
{
preorder(t->leftchild);
}
if(t->rightchild!=NULL)
{
preorder(t->rightchild);
}
}
}
void dowork()
{
bitnode* cam;
creattree(cam);
preorder(cam);
}
int main()
{
dowork();
return 0;
}中序和后序就把先序的位置换一下就OK了
这是先序的代码
void preorder(bitree t) //先序
{
if((t)!=NULL)
{
cout<<(char)t->data;
if(t->leftchild!=NULL)
{
preorder(t->leftchild);
}
if(t->rightchild!=NULL)
{
preorder(t->rightchild);
}
}
}中序
void inode(bitree t)
{
if(t!=NULL)
{
inode(t->leftchild);
cout<<t->data;
inode(t->rightchild);
}
}后序
void prostnode(bitree t)
{
if(t!=NULL)
{
prostnode(t->leftchild);
prostnode(t->rightchild);
cout<<t->data;
}
}主函数调用
二叉树遍历分为 前序遍历 中序遍历 后序遍历 层次遍历 #include <iostream>
#include <stdlib.h>
#include<string>
#include<cstdio>
using namespace std;
typedef struct bitnode
{
struct bitnode* leftchild; // 指针 注意 typedef 创建一个指针
struct bitnode* rightchild;
char data;
}bitnode,*bitree;
void creattree(bitree &t) // 用递归建立二叉树 输入#为没有数据
{
char ch;
cin>>ch;
if(ch=='#')
t=NULL;
else
{
t=(bitnode *)malloc(sizeof(bitnode));
t->data=ch; //
t->leftchild=new bitnode;
t->rightchild=new bitnode;
creattree((t)->leftchild);
creattree((t)->rightchild);
}
}
void preorder(bitree t)
{
if((t)!=NULL)
{
cout<<(char)t->data;
if(t->leftchild!=NULL)
{
preorder(t->leftchild);
}
if(t->rightchild!=NULL)
{
preorder(t->rightchild);
}
}
}
void dowork()
{
bitnode* cam;
creattree(cam);
preorder(cam);
}
int main()
{
dowork();
return 0;
}中序和后序就把先序的位置换一下就OK了
这是先序的代码
void preorder(bitree t) //先序
{
if((t)!=NULL)
{
cout<<(char)t->data;
if(t->leftchild!=NULL)
{
preorder(t->leftchild);
}
if(t->rightchild!=NULL)
{
preorder(t->rightchild);
}
}
}中序
void inode(bitree t)
{
if(t!=NULL)
{
inode(t->leftchild);
cout<<t->data;
inode(t->rightchild);
}
}后序
void prostnode(bitree t)
{
if(t!=NULL)
{
prostnode(t->leftchild);
prostnode(t->rightchild);
cout<<t->data;
}
}主函数调用
int main() { bitnode* cam; creattree(cam); preorder(cam); cout<<endl; inode(cam); cout<<endl; prostnode(cam); return 0; }
相关文章推荐
- 暑假集训 8.9 求二叉树的深度sdut2804 已知前中后中的两个序列建树及应用.
- 暑假集训 8.8 sdut2136 数据结构实验之二叉树的建立与遍历
- 2017 暑假艾教集训 day8 (树链剖分+树上点分治)
- 2017 暑假艾教集训 day8 (补一道思维题,
- ACM暑假集训日记 17.8.14
- 暑假集训-字符串
- 暑假集训日记--8.17--树状数组+练习赛
- 暑假集训每日一题 0726 (二分图匹配)
- 暑假集训中期测试 Problem G: 维护序列 (线段树)
- 今天傍晚,暑假集训签到,来了250多人,好开心。
- 2018暑假校内集训日记
- 2015hust暑假集训 0715 F - Biorhythms
- 俄罗斯方块 -- 暑假集训
- 暑假集训第二周——贪心 盒子平移
- 暑假集训——个人训练赛04——E题
- 暑假集训之专题----拓扑排序题解
- 暑假集训第三周 STL D - 排列
- 2015 暑假集训14级第一周周赛解题报告
- ZZUACM 2015 暑假集训 round 01
- 【暑假集训】之被ACM金牌大神虐的第三天之树形dp篇