二叉树顺序存储结构

二叉树的顺序存储结构就是用一维数组存储二义树中的结点并且结点的存储位置,也就是数组的下标要能体现结点之间的逻辑关系,比如双亲与孩子的关系,左右兄弟的关系等。

顺序存储结构一般只用于完全二叉树。

将这棵二叉树存入到数组中,相应的下标对应其同样的位置:

二叉链表

typedef struct BiTNode  /* 结点结构 */
{TElemType data;                  /*结点数据 */struct BiTNode *lchild,*rchild; /* 左右孩子指针 */
}BiTNode,*BiTree;

遍历二叉树

二叉树的遍历是指从根结点出发。按照某种次序依次访问二叉树中所有结点,使得每个结点被访问一次且仅被访问一次。

二叉树的遍历方法

1前序遍历

规则是若二叉树为空,则空操作返回,否则先访问根结点,然后前序遍历左子树,再前序遍历右子树。

遍历的顺序为:ABDGHCEIF

/* 操作结果: 前序递归遍历T */
void PreOrderTraverse(BiTree T)
{ if(T==NULL)return;printf("%c",T->data);/* 显示结点数据,可以更改为其它对结点操作 */PreOrderTraverse(T->lchild); /* 再先序遍历左子树 */PreOrderTraverse(T->rchild); /* 最后先序遍历右子树 */
}

2中序遍历

规则是若树为空,则空操作返回,否则从根结点开始(注意并不是先访问根结点),中序遍历根结点的左子树,然后是访问根结点,最后中序遍历右子树。

遍历的顺序为:GDHBAEICF

/* 操作结果: 中序递归遍历T */
void InOrderTraverse(BiTree T)
{ if(T==NULL)return;InOrderTraverse(T->lchild); /* 中序遍历左子树 */printf("%c",T->data);/* 显示结点数据,可以更改为其它对结点操作 */InOrderTraverse(T->rchild); /* 最后中序遍历右子树 */
}

3后序遍历

规则是若树为空,则空操作返回,否则从左到右先叶子后结点的方式遍历访问左右子树,最后是访问根结点。

遍历的顺序为:GHDBIEFCA

/* 操作结果: 后序递归遍历T */
void PostOrderTraverse(BiTree T)
{if(T==NULL)return;PostOrderTraverse(T->lchild); /* 先后序遍历左子树  */PostOrderTraverse(T->rchild); /* 再后序遍历右子树  */printf("%c",T->data);/* 显示结点数据,可以更改为其它对结点操作 */
}

4层序遍历

规则是若树为空,则空操作返回,否则从树的第一层,也就是根结点开始访问,从上而下逐层遍历,在同一层中,按从左到右的顺序对结点逐个访问。

遍历的顺序为:ABCDEFGHI

遍历二叉树(四种方式:前序、中序、后序、层序)相关推荐

  1. java中Map遍历的四种方式

    java中Map遍历的四种方式 在java中所有的map都实现了Map接口,因此所有的Map(如HashMap, TreeMap, LinkedHashMap, Hashtable等)都可以用以下的方 ...

  2. PHP数组循环遍历的四种方式

    [(重点)数组循环遍历的四种方式]  1.使用for循环遍历数组      conut($arr);用于统计数组元素的个数.      for循环只能用于遍历,纯索引数组!!!!      如果存在关 ...

  3. Map集合遍历的四种方式理解和简单使用

    Map集合遍历的四种方式理解和简单使用 ~Map集合是键值对形式存储值的,所以遍历Map集合无非就是获取键和值,根据实际需求,进行获取键和值 1:无非就是通过map.keySet()获取到值,然后根据 ...

  4. java enum判断_Java Enum枚举 遍历判断 四种方式(包括 Lambda 表达式过滤)

    packagecom.miracle.luna.lambda;importjava.util.Arrays;/*** @Author Miracle Luna * @Date 2019/6/9 23: ...

  5. php中数组遍历的四种方式

    首先要讲一点的是:PHP中的数组与C/C++中的数组不同. 它是基于键值对结构的hash表来实现的(存在key/value的概念).有点类似于python和lua中的dictionary. 在没有显示 ...

  6. Python__数据结构与算法——树、二叉树(实现先、中、后序遍历)

    目录 一.树 二.二叉树 树和前面所讲的表.堆栈和队列等这些线性数据结构不同,树不是线性的.在处理较多数据时,使用线性结构较慢,而使用树结构则可以提高处理速度.不过,相对于线性的表.堆栈和队列等线性数 ...

  7. java对集合遍历的四种方式

    目录 文章目录 目录 1.背景 2.添加集合 3.遍历集合 3.1 普通循环遍历 3.2 迭代器遍历 3.3 增强for遍历(foreach) 3.4 list.forEach 4.总结 1.背景 目 ...

  8. Map 集合循环、遍历的 四 种方式

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. package cn.jdbc.test; import java.util.HashMap; im ...

  9. map遍历的四种方式

    一.map.values() 推荐只用value的时候用 // Map.values()遍历所有的value,不遍历keyfor (String v : map.values()) {System.o ...

  10. 二叉树前序中序后续线索树_二叉树的先序,中序,后序遍历以及线索二叉树的遍历...

    二叉树的先序,中序,后序遍历以及线索二叉树的遍历 (2008-05-04 17:52:49) 标签: 杂谈 C++ 二叉树的先序,中序,后序遍历以及线索二叉树的遍历 头文件 //*********** ...

最新文章

  1. Distance计算的距离随经纬度不同
  2. PHP新浪乐居面试题,一个朋友去新浪乐居面试时的面试题(PHP)
  3. HTML页面显示缩略所有空格为一格的方法
  4. Java -- 内部类(一)
  5. [MySQL]--gt;查询5天之内过生日的同事中的闰年2月29日问题的解决过程
  6. 北冥有 Data,其名为鲲,鲲之大,一个 MySQL 放不下!
  7. 某些服务在未由其他服务或程序使用时将自动停止
  8. [Coci2015]Divljak
  9. 使用 Kotlin Script 自定义实现项目开发脚手架
  10. python制作翻译器代码_翻译器(3)
  11. Windows各个系统勒索补丁下载地址
  12. 《程序员的数学》读书计划
  13. asp毕业设计——基于asp+access的WEB网上留言板设计与实现(毕业论文+程序源码)——网上留言板
  14. Handmade Hero全程直播游戏引擎开发
  15. 1717: [Usaco2006 Dec]Milk Patterns 产奶的模式
  16. 基于SURF算法的图像拼接方法
  17. USB大容量存储设备浅析
  18. SIP12 脚 电磁隔离放大器IC 模拟信号隔离放大器 电磁耦合隔离放大器
  19. C++17 结构化绑定
  20. python---关于集合

热门文章

  1. bzoj 1617: [Usaco2008 Mar]River Crossing渡河问题(DP)
  2. 汉诺塔问题(递归思想)(堆栈学习)
  3. grafana将自己的数据库(hbase)设置为数据源
  4. OPNET网络仿真分析-1.1.2、OPNET简介
  5. -函数-MATLAB提供的函数/主子函数/匿名-嵌套函数
  6. python批量实现将文件夹内的每张图片分割成多张
  7. Flink官方文档学习(三):Standalone Cluster 集群部署
  8. VMWare workstation Pro 14 For Linux key
  9. scrapy框架系列 (2) 一个简单案例
  10. (三)cmockery中的消息打印以及可变参数相关总结