想要获取中序遍历时某一节点的直接后继,

  • 首先在数据结构上,结点必须维护指向父节点的指针(parent),

    • 因为当前结点的后继有可能是其父节点,

      • 如果其本身没有右孩子;
      • 或者本身是左孩子结点;
  • 注意对当前结点进行分类讨论
    • 是否有右孩子

      • 有:递归遍历右孩子的左孩子,直到没有左孩子为止;
      • 无:当前结点是否为右孩子,
        • 是:
        • 否:返回其父结点;
template<typename T>
BinNodePosi(T) BinNode<T>::succ(){BinNodePosi(T) s = this;if (rChild) {s = rChild;while (HasLChild(s)) s = s->lChild;} else{while (IsRChild(s)) s = s->parent;s = s->parent;}return s;
}

转载于:https://www.cnblogs.com/mtcnn/p/9423735.html

二叉树 —— 中序遍历结点的后继相关推荐

  1. 【LeetCode 剑指offer刷题】树题19:8 二叉树中序遍历的下一个结点

    [LeetCode & 剑指offer 刷题笔记]目录(持续更新中...) 8 二叉树中序遍历的下一个结点 题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注 ...

  2. 不用栈的二叉树中序遍历

    不用栈的二叉树中序遍历 // 中序遍历非栈非递归 void inOrder_noRecursion_noStack(TreeNode* r, char* pattern) {TreeNode* cur ...

  3. 二叉树中序遍历线索化 C++ 递归实现

    二叉树中序遍历线索化 中序遍历有一个特点,只要不是叶子节点,遍历的时候左孩子一定是当前节点的上一个访问节点:右孩子一定是当前节点的下一个访问节点. 如果把叶子节点的左右孩子都利用起来,把空的左孩子做成 ...

  4. 二叉树中序遍历线索化

    #include<stdio.h>typedef struct ThreadNode{int data;struct ThreadNode *lchild,*rchild;int ltag ...

  5. 二叉树中序遍历Stack实现

    之前也知道递归的实质就是Stack,但一直也没怎么思考.今天看到一个二叉树中序遍历的算法题,想着可以自己用栈实现一下. 首先中序遍历二叉树的访问顺序是左子树-根节点-右子树.既然是树的遍历,我们需要定 ...

  6. 详细图解二叉树中序遍历(非递归C++)LeetCode94

    详细图解二叉树中序遍历(非递归) 二叉树中序递归含义 LeetCode题目94 详细图解 源代码 运行结果 二叉树中序递归含义 中序遍历首先遍历左子树,然后访问根结点,最后遍历右子树.若二叉树为空则结 ...

  7. 【C语言】二叉树中序遍历(递归和非递归)算法

    二叉树中序遍历的实现思想是: 访问当前节点的左子树: 访问根节点: 访问当前节点的右子树: 图 1 二叉树 以图  1 为例,采用中序遍历的思想遍历该二叉树的过程为: 访问该二叉树的根节点,找到 1: ...

  8. 二叉树中序遍历 (C语言实现)

    在计算机科学中,树是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为结点)按分支关系组织起来的结构.二叉树是每个节点最多有两个子树的有序树.通常子树被称作"左子树"(l ...

  9. Java 二叉树中序遍历(递归/非递归)

    Java 二叉树中序遍历(递归/非递归) 中序遍历 代码实现 递归方式 非递归方式 简介: 遍历是对树的一种最基本的运算,所谓遍历二叉树,就是按一定的规则和顺序走遍二叉树的所有结点,使每一个结点都被访 ...

最新文章

  1. 一文搞懂TCP的三次握手和四次挥手
  2. 文本分类之特征简约算法说明
  3. Mysql数据库基础系列(二):表结构、键值
  4. Delphi 对象的创建(create)与释放(free/destory)
  5. Huawei LiteOS简介
  6. 数据科学 IPython 笔记本 8.6 可视化误差
  7. SQL Server 内存泄露(memory leak)——游标导致的内存问题
  8. 学习笔记 - Nginx在多层代理下获取真实客户端IP地址
  9. [苹果技巧]苹果系统用于系统监控和管理的命令
  10. 网络中的一些专业名词解释
  11. 使matlab2018支持使用VS2019编译
  12. u盘在 计算机管理显示无媒体,urdrive_u盘显示无媒体怎么办_启动盘
  13. Excel2007中文显示乱码的解决方法(亲自实践)
  14. PostgreSQL 配置文件 postgresql.conf 及 postgresql.auto.conf
  15. 非参数统计的Python实现——卡方独立性检验
  16. elasticsearch服务自动断掉
  17. 在Anaconda下创建一个新的环境并安装tensorflow
  18. 发改委印发三年行动计划 智能机器人有望成为下一片蓝海
  19. ubuntu11.10 安装谷歌拼音输入法详细步骤
  20. python中的format什么意思中文-python中format函数什么意思

热门文章

  1. 网站制作时应该如何更合理定位与策划
  2. ActionResult 返回类型
  3. JavaScript——this、constructor、prototype
  4. 前端领域的BEM到底是什么
  5. 将集合中的内容按时间排序
  6. Android开发六年收获阿里offer定级P7,多亏在阿里P8师兄给的攻略、面试技巧以及学习笔记!!!
  7. 追根究底之以不变求万变:利用SetCapture捕获鼠标
  8. Activity A 启动 Activity B 生命周期
  9. Android SystemTrace使用攻略
  10. 华丽丽的GridLayout-使用案例