二叉树的三种遍历是以根的遍历顺序来讲的
先序遍历(根左右)
中序遍历(左根右)
后序遍历(左右根)

二叉树是从根节点的那一层开始,从左至右读每一层的结点读入的。@表示空结点,#表示输入结束

#include <iostream>
#include <cstdio>
#include <cmath>
#include <string>
#include <cstring>
#include <algorithm>
#include <limits>
#include <vector>
#include <stack>
#include <queue>
#include <set>
#include <map>
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int maxN = 1e5 + 5;
const int maxM = 1;struct bitree{char data;bitree *lsn, *rsn;
} *tree[maxN];
bitree *Creat_Bitree()
{bitree *root, *tmp;root = NULL;int front = 1, rear = 0;char ch;ch = getchar();while(ch != '#'){tmp = NULL;if(ch != '@'){tmp = (bitree *)malloc(sizeof(bitree));tmp->data = ch;tmp->lsn = NULL;tmp->rsn = NULL;}tree[++ rear] = tmp;if(rear == 1) root = tmp;else{if(tmp && tree[front])//孩子不为空且父亲结点不为空{if(rear % 2 == 0)tree[front]->lsn = tmp;elsetree[front]->rsn = tmp;}if(rear % 2)//tree[front]的左右孩子处理完了front ++;}ch = getchar();}return root;
}
void preorder(bitree *p)
{if(p != NULL){printf("%c", p->data);preorder(p->lsn);preorder(p->rsn);}
}
void midorder(bitree *p)
{if(p != NULL){midorder(p->lsn);printf("%c", p->data);midorder(p->rsn);}
}
void lastorder(bitree *p)
{if(p != NULL){lastorder(p->lsn);lastorder(p->rsn);printf("%c", p->data);}
}
int main()
{bitree *rt;rt = Creat_Bitree();printf("Preorder is:\n");preorder(rt);printf("\nMidorder is:\n");midorder(rt);printf("\nLastorder is:\n");lastorder(rt);return 0;
}
/*
ABCD@EF@G@@@@H#
*/

二叉树的建立和三种遍历相关推荐

  1. 二叉树的建立与三种遍历

    树是一种数据结构,为什么叫它"树",因为它倒过来就是一棵树 根在上,而叶在下 其概念主要有根.父.子.深.叶等, 如上图:A为这棵树的根 B为D的父,而D则为B的子 E.F.G互为 ...

  2. # 遍历结构体_关于二叉树怎样建立和四种遍历方法你知道吗?

    1. 首先我们要知道二叉树的性质是什么2. 怎样建立二叉搜索树?3. 先序遍历4. 中序遍历5. 后序遍历6. 总结上述三种遍历规律7. 层序遍历 1. 首先我们要知道二叉树的性质是什么 在二叉树上, ...

  3. 二叉树的创建与三种遍历方式(带图文详解)

    二叉树是由多节点组成的,每个节点最多链接两个节点,这两个节点就称为根节点的左树和右树. 每个节点的由数据区,左树,右树组成. typedef struct node {int data;struct ...

  4. 20-12-22 二叉树的构建、三种遍历、顺序二叉树原理

    二叉树: public class BinaryTree {public static void main(String[] args) {HeroNode heroNode1 = new HeroN ...

  5. c语言中二叉树中总结点,C语言二叉树的三种遍历方式的实现及原理

    二叉树遍历分为三种:前序.中序.后序,其中序遍历最为重要.为啥叫这个名字?是根据根节点的顺序命名的. 比如上图正常的一个满节点,A:根节点.B:左节点.C:右节点,前序顺序是ABC(根节点排最先,然后 ...

  6. 二叉树----数据结构:二叉树的三种遍历及习题

    二叉树----数据结构:二叉树的三种遍历,利用递归算法. 关于二叉树的遍历,应用非常广泛,不单单是访问打印结点,还可以进行一系列的操作,如赋值.删除.查找.求二叉树的深度等等. 有递归和非递归两种算法 ...

  7. 二叉树的三种遍历方式(递归、非递归和Morris遍历)

    二叉树的三种遍历方式(递归.非递归和Morris遍历) 原文:http://www.linuxidc.com/Linux/2015-08/122480.htm 二叉树遍历是二叉树的最基本的操作,其实现 ...

  8. c语言二叉树的遍历菜单系统,C语言二叉树的三种遍历方式的实现及原理

    C语言二叉树的三种遍历方式的实现及原理 发布时间:2020-10-03 19:43:57 来源:脚本之家 阅读:63 作者:看雪. 二叉树遍历分为三种:前序.中序.后序,其中序遍历最为重要.为啥叫这个 ...

  9. 二叉树的前序中序后序三种遍历方式及递归算法介绍

    二叉树三种遍历方式 二叉树的遍历是整个二叉树的核心,二叉树的几本操作都要依赖于遍历,对于二叉树的遍历,递归是最简单也最容易理解的,本文详细介绍了二叉树的三种遍历方法,并用递归来实现: 完整的可调试代码 ...

最新文章

  1. windows10 中 python3 离线 安装包,没有 网络 的 情况下 安装 whl包
  2. python 倒计时功能怎么用print实现_python 实现倒计时功能(gui界面)
  3. python语言的理解-初学Python语言者必须理解的下划线
  4. java线程学习之notify方法和notifyAll方法
  5. 用系统滚动条实现NumericUpDown的原理
  6. 如何利用扩展欧几里得算法求解不定方程_客户端不用的算法系列:从头条笔试题认识扩展欧几里得算法...
  7. java 嵌套类 作用_java 嵌套类的分类、为什么使用嵌套类?
  8. RocketMq重试及消息不丢失机制
  9. 如何对oracle数据库进行监控检查
  10. Mac 常用快捷键与操作
  11. C#之网络字节序与主机字节序互转
  12. fastText:极快的文本分类工具
  13. 人脸识别测试图片_人脸识别或将到达瓶颈,有监督的聚类算法探索新思路
  14. 我想问问4月7号什么日子
  15. 什么都会,也许只是盲目跟风,和优秀无关
  16. 鸿蒙os系统测评,鸿蒙OS 2首批评价出炉,看已升级用户都怎么说的
  17. matlab mysql建系统_能环水体治理项目(Mysql数据库,Matlab创建GUI界面)【一】
  18. 安装配置MacTex
  19. 今日头条(java后台开发)——实习生面试
  20. 孪生素数【函数实现】

热门文章

  1. VCS和UVM常用编译选项
  2. 这7个网站,帮你找到精美高清配图
  3. spring cloud stream kafka 处理消息
  4. java 十进制转二进制代码_十进制转二进制代码
  5. 和风SDK查询城市ID(保姆级教程)
  6. canvas保存到本地图片三种方法
  7. 微信小程序021理发店美容预约系统java nodejs php
  8. ORACLE数据导入示例
  9. 微软ad域服务器 管理用户,管理 Azure AD 域服务的 DNS | Microsoft Docs
  10. Eloquent JavaScript #04# Objects and Arrays