中序线索二叉树找中序后继

中序线索化二叉树主要是为了访问运算服务的,这种遍历不再借助栈,因为它的结点中隐含了线索二叉树的前驱和后继信息。

利用线索二叉树,可以实现二叉树遍历的非递归算法。不含头结点的线索二叉树的遍历算法如下

//找到以P为根的子树中,第一个被中序遍历的结点
ThreadNode *Firstnode(ThreadNode *p)
{while(p->ltag==0) //循环找到最左下结点(不一定是叶结点)p = p->lchild;return p;
}//在中序线索二叉树中找到结点p的后继结点
ThreadNode *Nextnode(ThreadNode *p)
{if(p->rtag==0) //右子树中最左下结点return Firstnode(p->rchild);elsereturn p->rchild; //rtag==1直接返回后继线索
}//对中序线索二叉树进行中序遍历(利用线索实现的非递归算法)
void Inorder(ThreadNode *T)
{for(ThreadNode *p = Firstnode(T); p!=NULL; p=Nextnode(p))visit(p);
}

中序线索二叉树找中序前驱


//找到以P为根的子树中,最后一个被中序遍历的结点
ThreadNode *Lastnode(ThreadNode *p)
{while(p->rtag==0) //循环找到最右下结点(不一定是叶结点)p=p->rchild;return p;
}//在中序线索二叉树中找到结点p的前驱结点
ThreadNode *Prenode(ThreadNode *p)
{if(p->ltag==0)return Lastnode(p->lchild);elsereturn p->lchild;
}//对中序线索二叉树进行逆向中序遍历
void RevInorder(ThreadNode *T)
{for(ThreadNode *p=Lastnode(T); p!=NULL; p=Prenode(p))visit(p);

先序线索二叉树找先序后继

先序线索二叉树找先序前驱


后序线索二叉树找后序前驱

后序线索二叉树找后序后继




在线索二叉树中找前驱后继相关推荐

  1. 线索二叉树中序非递归线索化以及递归线索化构建和遍历算法

    引文 大部分教材给出了 线索二叉树的中序递归线索化以及中序遍历,但是没给出非递归,现在网上大部分非递归算法代码各种条件判断写的比较离谱,所以干脆自己总结了一个清晰的.线索二叉树中序非递归线索化以及递归 ...

  2. 二叉树路径和最大python_python3实现在二叉树中找出和为某一值的所有路径(推荐)...

    请写一个程序创建一棵二叉树,并按照一定规则,输出二叉树根节点到叶子节点的路径. 规则如下: 1.从最顶端的根结点,到最下面的叶子节点,计算路径通过的所有节点的和,如果与设置的某一值的相同,那么输出这条 ...

  3. 线索二叉树(中序、先序和后序及遍历)

    链式存储 线索二叉树是二叉树的一类,在看线索二叉树之前我们先看一下二叉树的链式存储. 一个二叉树的存储例子(后面用到的二叉树都是这棵): 代码是这样的: public class BinaryTree ...

  4. 线索二叉树 C语言 数据结构 先序线索二叉树 中序线索二叉树 后序线索二叉树

    在二叉树的结点上加上线索的二叉树称为线索二叉树,对二叉树以某种遍历方式(如先序.中序.后序或层次等)进行遍历,使其变为线索二叉树的过程称为对二叉树进行线索化. 文章目录 一.c语言实现先序线索.中序线 ...

  5. 二叉树中找两个结点的最近公共祖先结点

    一.搜索二叉树:第一变种是二叉树是一种特殊的二叉树:查找二叉树.也就是树是排序过的,位于左子树上的结点都比父结点小,而位于右子树的结点都比父结点大.我们只需要从根结点开始和两个结点进行比较.如果当前结 ...

  6. 在二叉树中找值为x的结点(假设所有结点的值都不一样)

    #include<iostream> #include<stack> #define N 7 using namespace std;typedef struct node { ...

  7. 为什么先序/中序线索二叉树不需要栈的支持,而后序线索二叉树需要栈的支持?

    为什么先序/中序线索二叉树不需要栈的支持,而后序线索二叉树需要栈的支持? 首先要明确两点 先序线索二叉树的缺点:无法找到先序序列中某结点的前驱 后序线索二叉树的缺点:无法找到后序序列中某结点的后继 中 ...

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

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

  9. 二叉树的链式存储结构(线索二叉树)

    一.链式存储结构 由于顺序存储二叉树的空间利用率较低,因此二叉树一般都采用链式存储结构,用链表结点来存储二叉树中的每个结点.在二叉树中,结点结构通过包括若干数据域和若干指针域,二叉链表至少包含3个域: ...

最新文章

  1. 独家 | 用归纳偏置来增强你的模型性能
  2. [Flutter] 发布自己的插件 package
  3. 这些用来审计 Kubernetes RBAC 策略的方法你都见过吗?
  4. 课堂作业:返回一个二维整数组中最大子数组的和
  5. 嵌套的json ajax,通过jquery或javascript通过AJAX读取嵌套的JSON并输出到表中
  6. angularjs的表单验证
  7. 【VS2015】链接器错误link2001
  8. python窗口怎么显示我输入的_Python分别用两个窗口显示和输入
  9. [转]Fedora用root登录
  10. linux运维实战案例,Linux运维实战练习案例20151220~20151231
  11. 爱加密脱壳(持续更新)
  12. zoj 3332 Strange Country II
  13. ensp服务器配置文件,ensp中服务器的基本配置
  14. macd java_macdev/java.md at master · pubyun/macdev · GitHub
  15. 京东自营厂直考试答案
  16. Python从入门到实战,我觉着拥有这三本书很有必要
  17. 84个常用的数据源网站分享!(保持更新,建议收藏)
  18. where 引导从句
  19. 济南大学计算机系录取分数线,2019年济南大学录取分数线是多少
  20. 液晶显示屏的C语言编码,AMPIRE12864液晶C语言代码

热门文章

  1. mysql的空间查询函数_MYSQL空间查询函数
  2. HTML文件点放在手机桌面,如何把手机桌面上的文件发送到微信里
  3. python嵌套列表法实现树_在python中创建递归迭代嵌套列表的“数据树”路径
  4. cass插件_第009期分享:Cass插件合集
  5. linux下,保存退出vim编辑器(转)
  6. Linux下后台任务管理screen的常见用法(命令)
  7. SparkSql学习笔记(包含IDEA编写的本地代码)
  8. rest_framework-00-规范-APIview源码解析-认证
  9. 输入url并按下回车的那一刻发生了什么?
  10. git进阶(撤销pull、撤销merge、撤销add)