二叉树的创建一数据结构一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 ...
随机推荐
- 详解Supervisor进程守护监控
Supervisor在百度百科上给的定义是超级用户,监管员.Supervisor是一个进程管理工具,当进程中断的时候Supervisor能自动重新启动它.可以运行在各种类unix的机器上,superv ...
- Codeforces - 346A - Alice and Bob - 简单数论
http://codeforces.com/problemset/problem/346/A 观察了一下,猜测和他们的最大公因数有关,除以最大公因数前后结果是不会变的. 那么怎么证明一定是有n轮呢?我 ...
- dijkstra算法的应用(poj2387)+堆优化【还没学C艹很尴尬,不理解的先不写了,未完,待续...】
一题非常简单的最短路题目,但是我就是很撒比的错在了,1.初始化:2.判断重边 堆优化,使用优先队列的堆优化:复杂度:O(ElogE); #include <stdio.h> #includ ...
- AFN清除图片缓存 以及菊花转圈
AFNetworking网络库已经提供了很好的图片缓存机制,效率是比较高的,但是我发现没有直接提供清除缓存的功能,可项目通常都需要添加 清除功能的功能,因此,在这里我以UIImageView+AFNe ...
- P1223 [小数据版]边权差值最小的生成树
这道题和最小生成树kruskal的代码几乎相同,只不过不一定是最小生成树,所以不一定从最短的边开始做生成树:所以将每一条边分别作为起点,然后枚举就行了...... #include <bits/ ...
- Python入门小练习 003 利用cookielib模拟登录获取账户信息
为了方便, 使用chinaunix的账户获取账户主题. 有些网站可能需要验证码, 找一些不用验证码的网站 下面 ****** 很多个星号的均为私密信息, 所以用星号代替 #!/usr/bin/pyt ...
- bzoj 4860 [BeiJing2017]树的难题
题面 https://www.lydsy.com/JudgeOnline/problem.php?id=4860 题解 点分治 设当前重心为v 假设已经把所有边按照出发点第一关键字, 颜色第二关键字排 ...
- 2015 ACM-ICPC国际大学生程序设计竞赛北京赛区网络赛 1002 Mission Impossible 6
题目链接: #1228 : Mission Impossible 6 解题思路: 认真读题,细心模拟,注意细节,就没有什么咯!写这个题解就是想记录一下rope的用法,以后忘记方便复习. rope(块状 ...
- 贪心 HDOJ 5090 Game with Pearls
题目传送门 /* 题意:给n, k,然后允许给某一个数加上k的正整数倍,当然可以不加, 问你是否可以把这n个数变成1,2,3,...,n, 可以就输出Jerry, 否则输出Tom. 贪心:保存可能变成 ...
- Contextual Action bar(3) 两个示例
一.通过activity启动Context Action Bar 1.主java public class ActivityActionModeFrgmt extends Fragment imple ...