二叉树的创建一数据结构一C++
typedef struct BitNode
{
char ch;
struct BitNode *lchild,*rchild;
}BitNode,*BitTree;
/*
typedef struct QNode
{
BitNode *tree;
struct QNode *next;
}QNode,*Queueptr;
{
Queueptr fro;
Queueptr rear;
}LinkQueue;
*/
void CreatBitTree(BitTree &T)
{
cin>>c;
if(c=='#')
T = NULL;
else
{
T = new BitNode;
T -> ch = c;
CreatBitTree(T -> lchild);
CreatBitTree(T -> rchild);
}
}
void Print1(BitTree T)
{
if(T != NULL)
{
cout<<T -> ch;
Print1(T -> lchild);
Print1(T -> rchild);
}
}
void Print2(BitTree T)
{
if(T != NULL)
{
Print2(T -> lchild);
cout<<T -> ch;
Print2(T -> rchild);
}
}
void Print3(BitTree T)
{
if(T != NULL)
{
Print3(T -> lchild);
Print3(T -> rchild);
cout<<T -> ch;
}
}
void Print4(BitTree T)
{
int m=10,i=0,fro=0,rear=0;
BitTree *a = new BitTree[m];
BitNode *t,*t1;
a[rear] = T;
cout<<a[rear] -> ch;
rear = (rear+1)%(m+1); //最大a[10]
while(fro != rear)
{
t = a[fro];
fro = (fro+1)%(m+1); //读取一个双亲并删除
if(t -> lchild)
{
t1 = t -> lchild;
a[rear] = t1;
rear = (rear+1)%(m+1);
cout<<t1 -> ch;
}
if(t -> rchild)
{
t1 = t -> rchild;
a[rear] = t1;
rear = (rear+1)%(m+1);
cout<<t1 -> ch;
}
}
}
{
int n;
cout<<"请输入遍历的顺序 1:先序遍历 2:中序遍历 3:后序遍历 4:层次遍历 5:退出程序"<<endl;
cin>>n;
switch(n)
{
case 1:
{
Print1(T);
cout<<endl;
}
break;
case 2:
{
Print2(T);
cout<<endl;
}
break;
case 3:
{
Print3(T);
cout<<endl;
}
break;
case 4:
{
Print4(T);
cout<<endl;
}
break;
case 5:
{
cout<<"程序退出成功"<<endl;
return 0;
}
break;
default:
cout<<"输入有误,重新输入"<<endl;
break;
}
}
{
int m=1;
cout<<"请按照先序输入:"<<endl;
BitTree T;
CreatBitTree(T);
while(m!=0)
{
m=Show(T);
}
return 0;
}
测试用例
ABC##DE#G##F###
*/
二叉树的创建一数据结构一C++的更多相关文章
- 数据结构二叉树的java实现,包括二叉树的创建、搜索、删除和遍历
根据自己的学习体会并参考了一些网上的资料,以java写出了二叉树的创建.搜索.删除和遍历等操作,尚未实现的功能有:根据先序和中序遍历,得到后序遍历以及根据后序和中序遍历,得到先序遍历,以及获取栈的深度 ...
- c/c++二叉树的创建与遍历(非递归遍历左右中,破坏树结构)
二叉树的创建与遍历(非递归遍历左右中,破坏树结构) 创建 二叉树的递归3种遍历方式: 1,先中心,再左树,再右树 2,先左树,再中心,再右树 3,先左树,再右树,再中心 二叉树的非递归4种遍历方式: ...
- 二叉树的创建、遍历(递归和非递归实现)、交换左右子数、求高度(c++实现)
要求:以左右孩子表示法实现链式方式存储的二叉树(lson—rson),以菜单方式设计并完成功能任务:建立并存储树.输出前序遍历结果.输出中序遍历结果.输出后序遍历结果.交换左右子树.统计高度,其中对于 ...
- JS实现二叉树的创建和遍历
1.先说二叉树的遍历,遍历方式: 前序遍历:先遍历根结点,然后左子树,再右子树 中序遍历:先遍历左子树,然后根结点,再右子树 后续遍历:先遍历左子树,然后右子树,再根结点 上代码:主要还是利用递归 ...
- java 二叉树的创建 遍历
本来说复习一下BFS和DFS,辗转就来到了二叉树...本文包括二叉树的创建和遍历 概念 数据:1 2 3 4 5 6 7生成一颗二叉树 上面的数是数据,不是位置,要区别一下数据和位置 红色的代表位置, ...
- [PHP] 数据结构-二叉树的创建PHP实现
1.利用递归的原理,只不过在原来打印结点的地方,改成了生成结点,给结点赋值的操作if(ch=='#'){*T=NULL;}else{malloc();(*T)->data=ch;createFu ...
- Java实现二叉树的创建和遍历操作(有更新)
博主强烈建议跳过分割线前面的部分,直接看下文更新的那些即可. 最近在学习二叉树的相关知识,一开始真的是毫无头绪.本来学的是C++二叉树,但苦于编译器老是出故障,于是就转用Java来实现二叉树的操作.但 ...
- C语言实现二叉树的创建&遍历
算法思想(重点是递归的使用) 利用扩展先序遍历序列创建二叉链表 采用类似先序遍历的递归算法,首先读入当前根结点的数据,如果是'.'则将当前 树根置为空,否则申请一个新结点,存入当前根结点的数据,分别 ...
- 剑指offer十七姊妹篇之二叉树的创建、遍历、判断子二叉树
1.二叉树节点类 public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public Tr ...
随机推荐
- 图像分类与KNN
1 图像分类问题 1.1 什么是图像分类 所谓图像分类问题,就是已有固定的分类标签集合,然后对于输入的图像,从分类标签集合中找出一个分类标签,最后把分类标签分配给该输入图像.虽然看起来挺简单的,但这可 ...
- Codeforces 711B 【模拟】
比赛的时候绝壁打麻烦了... 考虑的好麻烦...wa7...还要判断出来的是不是positive的... 好吧..认了.. #include<cstdio> #include <ma ...
- bzoj1485: [HNOI2009]有趣的数列(Catalan数)
1485: [HNOI2009]有趣的数列 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 2105 Solved: 1117[Submit][Stat ...
- NOIp2002神经网络 【拓扑排序】By cellur925
题目传送门 这道题目没有什么难的,是一道拓扑排序+递推的题目.我的思路是开始处理出拓扑序,然后因为数据范围很小怎么搞都可以,就邻接矩阵存图+暴力枚举.结果60分. 后来看题解发现,大家都是边拓扑边进行 ...
- hdu1856 More is better 基础并查集
#include <cstdio> #include <cstring> #include <algorithm> #include <cstdlib> ...
- python之重写父类方法
#修改父类的方法#重写父类的方法的目的是为了给他扩展功能,父类的方法已经不能满足需求#核心思想就一句话,先调用一下你要重写的父类方法,class Coon(object): #基本类 def __in ...
- UWP 实现分享功能
一:需求 实现点击分享按钮,分享内容到微博,邮箱等.. like this 二:DataTransferManager 数据传输管理类 DataTransferManager dataTransfer ...
- 在eclipse中配置Tomcat并将项目部署到Tomcat上
参考:http://blog.csdn.net/yerenyuan_pku/article/details/51830104 首先在点击window窗口然后preferences 然后点击Add,选择 ...
- android开发学习 ------- 【转】EventBus的学习理解
EventBus是一个Android端优化的publish/subscribe消息总线,简化了应用程序内各组件间.组件与后台线程间的通信. 比如请求网络,等网络返回时通过Handler或Broadca ...
- 初次使用引用外部js心得
在外部引用自己编辑的js时建立链接写在头部中是会出错的,如下图 错误如下: 这是一个是我初学时遇到的一个算是低级错误吧,看到这个错误,我以为的是我引用的js中编辑的代码是不是哪里写错了,但是看了好多遍 ...