一、二叉树的遍历

1.先序遍历
在二叉树非空的情况下:
(1)访问根结点
(2)先序遍历左子树
(3)先序遍历右子树
对应算法如下:
void PreOrder(BiTree T){
  if(T != NULL){
    visit(T);//访问根结点
    PreOrder(T->lchild);//遍历右子树
    PreOrder(T->rchild);//遍历左子树
  } 
}
2.中序遍历
(1)中序遍历左子树
(2)访问根结点
(3)中序遍历右子树
对应算法如下:
void InOrder(BiTree T){
  if(T != NULL){
    InOrder(T->lchild);
    visit(T);
    PreOrder(T->rchild);
  }

3.后序遍历过程为:
(1)中序遍历左子树
(2)中序遍历右子树
(3)访问根结点
对应算法如下:
void PostOrder(BiTree T){
  if(T != NULL){
    InOrder(T->lchild);
    PreOrder(T->rchild);
    visit(T);
  }

4.由遍历序列构造二叉树
根据先序序列和中序序列可唯一确定一棵二叉树
根据后序序列和中序序列也可以确定一棵二叉树
但是后序和先序序列无法唯一确定一棵二叉树

二、线索二叉树
1.基本概念
若无左子树,令lchild指向前驱结点,若无右子树,令rchild指向后继结点。前继和后继根据遍历序列方式而不同
线索二叉树存储结构描述:
typedef struct _node_{
  int data;//数据
  struct _node_ *lchild, *rchild;//左右孩子指针
  int ltag,rtag;//左右线索标志
}Node;
2.线索二叉树构造
通过中序遍历对二叉树线索化算法:

void InThred(ThreadTree &p,ThreadTrdd &pre){if(p != NULL){InThread(p->lchild, pre);//递归,线索化左子树if(p->lchild == NULL){   //左子树为空,建立前戏线索p->lchild = pre;p->ltag = 1;}if(pre != NULL && pre->rchild == NULL){pre->rchild = p;  //建立前驱结点的后继线索pre->rtag = 1;}pre = p;  //标记当前结点成为刚刚访问过的结点InThred(p->rchild, pre); //递归线索化右子树}
}

主算法如下:

void CreateInThread(ThreadTree T){ThreadTree pre = NULL;if(T != NULL){InThread(T, pre);pre->rchild = NULL;//处理遍历的最后一个结点pre->rtag = 1;}
}

3.线索二叉树的遍历
(1)找中序二叉树中中序序列下的第一个结点
  ThreadNode *Firstnode(ThreadNode *p){
    while(p->ltag == 0) p = p->lchild;
    return p;
  }
(2)找中序序列二叉树结点p在中序序列下的后继结点
  ThreadNode *Nextnode(ThreadNode *p){
    if(p->rtag == 0)return Firstnode(p->p->rchild);
    else return p->rchild; 
  }
(3)利用以上两个算法,写出中序线索二叉树的中序遍历算法
  void Inorder(ThreadNode *T){
    for(ThradNode *p=Firstnode(T); p!=NULL; p=Nextnode(p))
      visit(p);
}

二叉树的遍历和线索线索二叉树相关推荐

  1. 二叉树的遍历 中序线索二叉树

    文章目录 前言 一.中序遍历的特点:投影 二.中序线索二叉树 三.代码思路 三.代码 前言 在N个节点的二叉树中,每个节点有2个指针,所以一共有2N个指针,除了根节点以外,每一个节点都有一个指针从它的 ...

  2. 二叉树前序遍历python输出_Python 二叉树查找 前序 中序 后序遍历

    # -*- coding: utf-8 -*- # author: zhonghua # filename: search_binarytree.py # create: 2016/3/29 # ve ...

  3. python二叉树广度遍历_黄哥Python: 二叉树的广度优先搜索的二种方法

    特别提示,转行的朋友,2019年不学习数据结构和算法,不刷Leetcode 等面试题库,是找不到程序员工作或者说找不到好的工作.黄哥:黄哥Python:提醒要转行当程序员的朋友,学习要分先后主次​zh ...

  4. 重拾算法(3)——用458329个测试用例全面测试二叉树和线索二叉树的遍历算法

    重拾算法(3)--用458329个测试用例全面测试二叉树和线索二叉树的遍历算法 在"上一篇"和"上上一篇"中,我给出了二叉树和线索二叉树的遍历算法.给出算法容易 ...

  5. 【线索二叉树】C++代码及线索化过程详解

    文章目录 线索二叉树的概念 中序线索二叉树的构造 中序线索二叉树的遍历 过程详解版代码 纯享版代码 我在这里不仅写了线索二叉树的普通代码,在代码中我还加入了线索化过程的打印,更好的帮助理解! 线索二叉 ...

  6. 《数据结构与算法》——树与二叉树之遍历总结

    <数据结构与算法>--树与二叉树之遍历总结 树与二叉树部分计划分为三次进行复习总结,第一次为基本概念和二叉树的遍历,第二次内容为线索二叉树以及树和森林,第三次为树与二叉树的应用. 目录 & ...

  7. mysql 遍历二叉树_数据结构——树与二叉树的遍历

    目录 树 二叉树 二叉树的遍历 总结 参考资料 序 树是学习数据结构的时候非常重要的一个数据结构,尤其是二叉树更为重要.像Java的HashMap 就使用了红黑树,而Mysql的索引就使用到了B+树. ...

  8. 二叉树的遍历(先序/中序/后序,递归/迭代)与搜索

    遍历一个数据结构,也即逐一地处理(可读可写)其中所有元素. 二叉树的遍历:一棵二叉树可以看作一个状态空间:根节点(入口)对应状态空间的初始状态,父子结点连接对应状态的邻接关系.以这种观点,一次二叉树的 ...

  9. “二叉树遍历“详解 以及 二叉树的实现

    目录 一.二叉树的遍历 1.二叉树的遍历的解释: 2.二叉树的遍历有三种递归结构 (1) 实现先序遍历: (2) 实现中序遍历: (3) 实现后序遍历: (4) 二叉树的层序遍历 二.二叉树的递归实现 ...

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

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

最新文章

  1. Linux中shell命令的用法和技巧
  2. 1.Power Designer 由数据库反向生成pdm文件
  3. 关于python安装lxml插件的问题
  4. 75个移动App开发教程
  5. 老子《道德经》第三章
  6. 二进制包20分钟快速安装部署 Kubernetes v1.14.0 集群
  7. civil3D地形导入AIW(设置投影坐标系)
  8. python数据爬取并可视化代码,python爬取摩拜单车API数据并做可视化分析(源码)...
  9. 识别INSB号码C语言如何讲述,探究机器码,深入研究C语言程序的机制
  10. 婚姻:中国女研究生结婚率下降明显 对方学历低看不上
  11. pcie转m2装系统win10_m.2固态硬盘怎么装win10教程|m.2固态硬盘装win10教程步骤
  12. 美团的战略、战术和能力圈 附下载地址
  13. 关于更改Python的默认工作路径
  14. SpringBoot banner图样
  15. OpenCV的Scalar对象怎样初始化,如何取分量值,如何与标量相乘?
  16. Informatica保障江苏电信规范化ETL开发
  17. 支持+86的手机和电话号码验证正则表达式
  18. html改变复选框颜色,如何利用纯CSS改变html?radio/checkbox默认背景颜色样式
  19. DataNode新节点服役与旧节点退役
  20. jqurey常用知识点 (非常重要!)

热门文章

  1. 如何领取6元虚拟主机?
  2. 关于xds100仿真器的ftdi驱动无法使用的问题
  3. 提高 MacBook 电池寿命的 9 种方法
  4. 志强处理器结尾的ES、QS、正式版的区别
  5. Autodesk 3ds Max 2023安装图文教程
  6. guid linux 识别的分区表_GUID分区与MBR分区有什么区别?
  7. oracle物理文件删除如何恢复,Oracle数据文件物理删除后的恢复
  8. 获取门店出错(44)美团聚宝盆 门店映射报错
  9. vue http put 请求入参报错400
  10. 亲测UEFI启动模式的电脑安装Win10和Ubuntu双系统(dell笔记本和hp笔记本)