关键是找前驱后继的思想理解了就好

//! 查找某个结点的前驱或后继结点(要求结点要有parent指针)
//! 前驱结点定义:中序遍历中的前一个结点,而不是二叉树结构中的上一个母结点
Node *BinarySearchTreesZH::predecessor(Node *node)
{if (node == nullptr){return node;}//! 前驱结点是左子树中的最右结点if (node->left != nullptr){node = node->left;while (node->right != nullptr){node = node->right;}return node;}else{while (node->parent != nullptr && node->parent->right != node){node = node->parent;}//! 此时到这里有两种可能//! node->parent = nullptr(即没有前驱结点) 或 node->parent ->right = node(即前驱结点是node->parent)//! 无论哪种 直接返回parent都可以return node->parent;}
}
//! 查找某个结点的后继结点(要求结点要有parent指针)
//! 后继结点定义:中序遍历中的后一个结点
Node *BinarySearchTreesZH::successor(Node *node)
{if (node == nullptr){return node;}//! 前驱结点是右子树中的最左结点if (node->right != nullptr){node = node->right;while (node->left != nullptr){node = node->left;}return node;}else{while (node->parent != nullptr && node->parent->left != node){node = node->left;}//! 此时到这里有两种可能//! node->parent = nullptr(即没有前驱结点) 或 node->parent ->left = node(即前驱结点是node->parent)//! 无论哪种 直接返回parent都可以return node->parent;}
}

2021-10-11 寻找二叉树结点的前驱或后继结点(用到parent指针)相关推荐

  1. 电动力学每日一题 2021/10/11

    电动力学每日一题 2021/10/11 日复一日,必有精进! (a) Integrating the DDD-field over the surface of the sphere of radiu ...

  2. 2021 - 10 -7 ! 二叉树的前序、中序、后序遍历 非递归思路(迭代版本)

    //! 前序遍历的非递归版本,精髓在于用栈模拟递归的过程,但实际进栈出栈顺序与递归并不一样, //! 比较抽象,建议画图理解,比较重要 void BinarySearchTreesZH::preord ...

  3. 2021/10/11 训练赛1 的个人小结

    比赛在HDU进行,网址入口是User Login,密码是acm加训练室号码 1.   POJ 1260  Pearls  珍珠   线性DP 问题描述 在珍珠岛,每个人都喜欢珍珠.一家名为" ...

  4. Morris Traversal方法遍历二叉树(非递归,不用栈,O(1)空间)——无非是在传统遍历过程中修改叶子结点加入后继结点信息(传统是stack记录),然后再删除恢复...

    先看看线索二叉树 n个结点的二叉链表中含有n+1(2n-(n-1)=n+1)个空指针域.利用二叉链表中的空指针域,存放指向结点在某种遍历次序下的前驱和后继结点的指针(这种附加的指针称为"线索 ...

  5. java 树最大距离_寻找二叉树最远的叶子结点(实例讲解)

    面试的时候碰到一个题:如何找到一个二叉树最远的叶子结点,以及这个叶子结点到根节点的距离? 第一反应肯定是递归 如何能找到最远的叶子结点,同时也能记下这个叶子节点到根节点的距离呢?采用一个List保持从 ...

  6. 计算机视觉最新进展概览2021年10月31日到2021年11月6日

    参考计算机视觉最新进展概览2021年10月31日到2021年11月6日 - 云+社区 - 腾讯云 1.Learning Distilled Collaboration Graph for Multi- ...

  7. Java实现判断叶子节点_寻找二叉树最远的叶子结点(实例讲解)

    二叉树最远的叶子实例分享 面试的时候碰到一个题:如何找到一个二叉树最远的叶子结点,以及这个叶子结点到根节点的距离? 第一反应肯定是递归 如何能找到最远的叶子结点,同时也能记下这个叶子节点到根节点的距离 ...

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

    寻找二叉树中两个结点的最近公共祖先(这两个结点一定在树中) 对于二叉树中两个结点的最近公共祖先来说 ,这两个结点分别在自己的左子树和右子树中,所以要寻找二叉树中两个结点的最近公共祖先可以: 从根结点开 ...

  9. 寻找二叉树两个结点的最低共同父节点

    寻找二叉树两个结点的最低共同父节点 题目:二叉树的结点的定义如下: struct TreeNode {int m_nValue;TreeNode *m_pLeft;TreeNode *m_pRight ...

最新文章

  1. java计算24小时之内_java的系统时间,怎么计算从现在到凌晨还剩下多少时间?
  2. 各种音频编码方式的对比
  3. 使用poi进行excel导入并解析插入数据库
  4. linux终端进程bash,让Linux的进程不受终端影响
  5. mysql 配置多个数据库连接_总结MySQL修改最大连接数的两个方式
  6. openssh升级_Redhat 6.5源码编译升级openssh到7.8版本
  7. 性能测试详解(三)Tomcat性能调优
  8. 恭贺除夕,没什么才艺展示,就给大家画新年四格小漫画吧 >⌒<
  9. 第三章第二十四题(游戏:抽牌)(Game: pick a card)
  10. 关于语音会议自动记录的大概设计思路
  11. 解决 Macbook 连接蓝牙鼠标卡顿问题
  12. win7没有计算机,Win7计算机上没有声音的解决方案
  13. 文件路径问题( ./ 和 ../ 和 @/ )
  14. 简易超声波雷达的arduino实现
  15. 如何运用dos命令进入指定目录
  16. 王者荣耀背后的实时大数据平台用了什么黑科技?
  17. 浅析MOS管串联并联的驱动应用
  18. 微信小程序优惠券样式
  19. 对抗样本(论文解读八):Towards More Robust Adversarial Attack Against Real World Object Detectors
  20. 全国青少年编程等级考试scratch二级真题2019年3月(含题库答题软件账号)

热门文章

  1. 查看SSID的mac地址
  2. java对象的内存结构_JAVA 对象内存结构
  3. 深度探索C++ 对象模型(2)-类的对象的内存大小
  4. 现代密码学5.4--对哈希函数的攻击
  5. 操作系统课设--扩展文件系统
  6. [architecture]-ARM SMMU学习概念总结一篇就够了
  7. mac生成linux下可执行的.go二进制文件
  8. 160个Crackme003之4C大法详解
  9. MySQL触发器简介
  10. sublime text 3170 破解工具