二叉树的查找(前序、中序、后序、层序遍历)--biaobiao88
建立一棵含有n个结点的二叉树,采用二叉链表存储;
输出前序、中序、后序、、层序遍历该二叉树的遍历结果。
定义二叉树的数据类型——二叉树结点结构体BiNode。建立二叉链表可以采用扩展二叉树的一个遍历序列,例如前序序列,将扩展二叉树的前序序列由键盘输入,建立该二叉树的二叉链表存储。
简单起见,本实验假定二叉树的数据元素为char型
用模板类改写
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<malloc.h>
int MaxSize = ;
using namespace std;
typedef char DataType;
typedef struct BiNode
{
DataType data;
struct BiNode *lchile,*rchild;
}BiNode;
BiNode *root; //创建拓展二叉树,#代虚结点
BiNode *Creat(BiNode *root)// cishu /////
{
char ch;
cin >> ch;
if(ch == '#')
root = NULL;
else
{
root = (BiNode *)malloc(sizeof(BiNode));
root->data = ch;
root->lchile = Creat(root->lchile);
root->rchild = Creat(root->rchild);
}
return root;
} //前序遍历
void PreOrder(BiNode *root)
{
if(root == NULL)
return;
else
{
cout << root->data << " ";
PreOrder(root->lchile);
PreOrder(root->rchild);
}
} //中序遍历
void InOrder(BiNode *root)
{
if(root == NULL)
return;
else
{
InOrder(root->lchile);
cout << root->data << " ";
InOrder(root->rchild);
}
} //后序遍历
void PostOrder(BiNode *root)
{
if(root == NULL)
return;
else
{
InOrder(root->lchile);
InOrder(root->rchild);
cout << root->data << " ";
}
} //层序遍历
void LevelOrder(BiNode *root)
{
BiNode *q = NULL,*Q[MaxSize];
int front = -;
int rear = -;
if(root == NULL)
return;
Q[++rear] = root;
while(front != rear)
{
q = Q[++front];
cout << q->data << " ";
if(q->lchile != NULL)
Q[++rear] = q->lchile;
if(q->rchild != NULL)
Q[++rear] = q->rchild;
} } int main()
{
BiNode *root = NULL;
root = Creat(root);
cout << "该二叉树的根节点是:" << root->data << endl;
cout << endl;
cout << "该二叉树的前序遍历是:";
PreOrder(root);
cout << endl;
// cout << "该二叉树的根节点是:" << root->data << endl;
cout << endl;
cout << "该二叉树的中序遍历是:";
InOrder(root);
cout << endl;
// cout << "该二叉树的根节点是:" << root->data << endl;
cout << endl;
cout << "该二叉树的后序遍历是:";
PostOrder(root);
cout << endl;
// cout << "该二叉树的根节点是:" << root->data << endl;
cout << endl;
cout << "该二叉树的层序遍历是:";
LevelOrder(root);
cout << endl;
return ;
} /*
abd##e##c#f##
该二叉树的根节点是:a 该二叉树的前序遍历是:a b d e c f 该二叉树的中序遍历是:d b e a c f 该二叉树的后序遍历是:d b e c f a 该二叉树的层序遍历是:a b c d e f
*/

二叉树的查找(前序、中序、后序、层序遍历)--biaobiao88的更多相关文章
- LeetCode:二叉树的前、中、后序遍历
描述: ------------------------------------------------------- 前序遍历: Given a binary tree, return the pr ...
- leetcode(144,94,145,102)中迭代版的二叉树的前、中、后、层级遍历
//前序遍历class Solution{ public: vector<int> preorderTraversal(TreeNode *root){ vector<int> ...
- 算法进阶面试题03——构造数组的MaxTree、最大子矩阵的大小、2017京东环形烽火台问题、介绍Morris遍历并实现前序/中序/后序
接着第二课的内容和带点第三课的内容. (回顾)准备一个栈,从大到小排列,具体参考上一课.... 构造数组的MaxTree [题目] 定义二叉树如下: public class Node{ public ...
- 二叉树 遍历 先序 中序 后序 深度 广度 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- 前序+中序->后序 中序+后序->前序
前序+中序->后序 #include <bits/stdc++.h> using namespace std; struct node { char elem; node* l; n ...
- SDUT OJ 数据结构实验之二叉树八:(中序后序)求二叉树的深度
数据结构实验之二叉树八:(中序后序)求二叉树的深度 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Probl ...
- SDUT-2804_数据结构实验之二叉树八:(中序后序)求二叉树的深度
数据结构实验之二叉树八:(中序后序)求二叉树的深度 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 已知一颗二叉树的中序 ...
- 给出 中序&后序 序列 建树;给出 先序&中序 序列 建树
已知 中序&后序 建立二叉树: SDUT 1489 Description 已知一棵二叉树的中序遍历和后序遍历,求二叉树的先序遍历 Input 输入数据有多组,第一行是一个整数t (t& ...
- 【C&数据结构】---关于链表结构的前序插入和后序插入
刷LeetCode题目,需要用到链表的知识,忽然发现自己对于链表的插入已经忘得差不多了,以前总觉得理解了记住了,但是发现真的好记性不如烂笔头,每一次得学习没有总结输出,基本等于没有学习.连复盘得机会都 ...
随机推荐
- spark运行信息及报错问题解决集锦
错误1: ERROR client.RemoteDriver: Failed to start SparkContext: java.lang.IllegalArgumentException: Ex ...
- Spring MVC-从零开始-@RequestMapping 注解method属性
1.@RequestMapping 处理 HTTP 的各种方法(GET, PUT, POST, DELETE PATCH) package com.jt; import org.springfram ...
- Python邮件发送功能
import smtplibfrom email.mime.text import MIMEText_user = "1147016115@qq.com"#发件人_pwd = &q ...
- Zookeeper工作过程详解
一.Zookeeper工作机制 分布式和集中式系统相比,有很多优势,比如更强的计算能力,存储能力,避免单点故障等问题.但是由于在分布式部署的方式遇到网络故障等问题的时候怎么保证各个节点数据的一致性和可 ...
- Python3 学习笔记之 IDLE
IDLE: IDLE是Python标准发行版内置的一个简单小巧的IDE,包括了交互式命令行.编辑器.调试器等基本组件,足以应付大多数简单应用. 基本操作: File->New File 新建立p ...
- 【maven的使用】1maven的概念与配置
maven是一个基于java平台的自动化构建工具.构建工具的发展由make->ant->maven->gradle其中gradle还在发展中,使用较少,学习难度比较大,所以目前占据主 ...
- 爬虫那点事,干就玩了之seleunim
目录 selenium 环境准备 代码环境 开始爬虫 操作js 截图 切换窗口 在当前窗口切换访问地址 管理cookie # 加入战队 微信公众号 # 加入战队 微信公众号 做技术我们最重要的是[做] ...
- php实现商城秒杀
这一次总结和分享用Redis实现分布式锁来完成电商的秒杀功能.先扯点个人观点,之前我看了一篇博文说博客园的文章大部分都是分享代码,博文里强调说分享思路比分享代码更重要(貌似大概是这个意思,若有误请谅解 ...
- Linux 命令个人笔记
[表示命令]man -f [] 显示一个命令的功能whatis [] 显示一个命令的功能ls -lR | grep '^-' | wc -l 统计一个目录下总共有多少个文件head [-n numbe ...
- 史上最全docker基础知识汇总
正文 Docker常用命令 run docker run [OPTIONS] IMAGE [COMMAND] [ARG...] -e设置环境变量:-e username=zhj --name为容器指定 ...