当前位置: 首页 > news >正文

二叉树找到下一个中序遍历节点的思路

        假如说我们现在在cur这个节点上,对于中序遍历来说可以知道left子树是全部遍历过的,那么我们下面该遍历right子树

一.right不是空树:cur++是right子树的最左边节点。

二. right是一个空树:那么就相当于cur这棵子树已经是被遍历完了,我们需要向上。那么就会有两种情况:1.cur=parent->left   2.cur=parent->right。

        1.对于cur=parent->left:cur作为一个左子树已经被遍历完了,所以下一个就是parent。

        2.对于cur=parent->right:cur作为一个右子树已经遍历完了,那么就意味着parent这颗子树已经被遍历完了,那就变成的二的情况,将parent当作cur继续重复即可,直到出现情况1或者cur->parent==nullptr结束。

    rbtreeiterator& operator++(){if (_node->_right != nullptr){_node = _node->_right;while (_node->_left) _node = _node->_left;}else{node* parent = _node->_parent;while (parent){if (_node == parent->_left) break;else{_node = parent;parent = parent->_parent;}}_node = parent;}return *this;}

http://www.lryc.cn/news/577037.html

相关文章:

  • MATLAB仿真:经过大气湍流的涡旋光束的光斑漂移
  • 消息队列:Redis Stream到RabbitMQ的转换
  • python中*args, **kwargs到底是什么意思
  • Mac使用VMware安装win11使用Origin绘图巨卡解决办法
  • linux运维学习第10周
  • 智能新纪元:大语言模型如何重塑电商“人货场”经典范式
  • 条件概率:不确定性决策的基石
  • Oracle 递归 + Decode + 分组函数实现复杂树形统计进阶(第二课)
  • 中介者模式 - Flutter中的通信指挥中心,告别组件间混乱对话!
  • 怎样学习STM32
  • Springboot 集成 SpringBatch 批处理组件
  • 2.安装Docker
  • 力扣第87题-扰乱字符串
  • 如何通过自动化减少重复性工作
  • Vue中的v-if与emit事件传递:一个常见陷阱分析
  • 推荐几本关于网络安全的书
  • FastAPI+Sqlite+HTML的登录注册与文件上传系统:完整实现指南
  • 6月28日记
  • Re:从0开始的 空闲磁盘块管理(考研向)
  • H3C-路由器交换机-中继
  • 用户行为序列建模(篇六)-【阿里】DSIN
  • DeepSeek五子棋游戏与AI对战
  • 【unity游戏开发——网络】网络游戏通信方案——强联网游戏(Socket长连接)、 弱联网游戏(HTTP短连接)
  • WebRTC(十三):信令服务器
  • Qt Windows下编译动态库生成的.a文件是什么?
  • 新生代潜力股刘小北:演艺路上的璀璨新星
  • Function Calling与MCP的区别
  • Ubuntu开放mysql 3306端口
  • X-Search:Spring AI实现的AI智能搜索
  • SpringMVC实战:从配置到JSON处理全解析