二叉树的下一个结点

麒麟V10系统命令实战指南:从入门到精通 本文为麒麟V10操作系统用户提供了一份从入门到精通的命令行实战指南。内容涵盖文件管理、进程监控、网络诊断、文本处理及系统管理等核心场景,旨在帮助用户转变思维,掌握高效解决实际问题的系统命令技巧,从而提升在麒麟V10环境下的运维与工作效率。 阅读详情

给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。

方法:

首先,判断pNode节点是否存在右孩子,若存在则遍历右孩子,找到右孩子的最左节点;

否则,从root出发,向上遍历,直到节点pre是其父节点的左孩子为止。

 

/*
struct TreeLinkNode {
    int val;
    struct TreeLinkNode *left;
    struct TreeLinkNode *right;
    struct TreeLinkNode *next;
    TreeLinkNode(int x) :val(x), left(NULL), right(NULL), next(NULL) {
        
    }
};
*/
class Solution {
public:
    TreeLinkNode* GetNext(TreeLinkNode* pNode)
    {
        if(!pNode)
            return NULL;
        TreeLinkNode* pre;
        if(pNode->right)  // right child exists
        {
            pre = pNode->right;
            while(pre->left)
            {
                pre = pre->left;
            }
            return pre;
        }
        else
        {
            //if(pNode->left) //left child exists
             //   return pNode->next;  //返回父节点
          //  else // leaf node
            {
                pre = pNode;
                while(pre&&pre->next&&pre->next->left!=pre)
                {
                    pre = pre->next;
                }
                if(pre)
                    return pre->next;
                return NULL;
            }
        }
    }
};

 

【Go语言实战】(2) Gin+Vue 电子商城 618来!!不用纠结去哪里剁手了!直接自己安排一个商场不香吗?? 阅读详情

相关推荐

从零构建:openEuler WSL下的ARM交叉编译工具链自动化部署方案

本文详细介绍了在openEuler WSL环境下使用Ansible自动化部署ARM交叉编译工具链的方案。通过编写Ansible角色和Playbook,实现从基础环境配置到工具链安装、环境变量设置的一键部署,大幅提升嵌入式开发效率。方案支持多种ARM架构,并扩展了QEMU仿真、VS Code远程开发等实用功能,是嵌入式开发者的高效解决方案。

h3i4j的博客 384

【leetcode】57. 二叉树的下一个结点

问题描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 思路 二叉树中序遍历的下一个结点,意思就是根据左中右来看的。如果这个结点有右子树,则答案肯定是右子树的最左下结点。 如果没有右子树,则要去看父亲。如果它是父亲的左孩子,则是答案,因为左中右嘛。 如果是父亲的右孩子,则去找父亲的父亲,因为左中右,它是父亲的右孩子,证明它的父亲也被遍历完了,只能继续网上找。 这题用next存储父亲真的是够走心的,呵呵。 方法一 cl

weixin_41687289的博客 1111

AD7920实战:从咪头到ADC的音频信号采集电路设计全解析(附电路图)

本文详细解析了基于AD7920 ADC芯片的音频信号采集电路设计全流程。从驻极体咪头的驱动、AD8542运放的两级增益与偏置设计,到关键的抗混叠滤波器配置,以及ADC接口的驱动缓冲与PCB布局要点,提供了完整的实战指南与电路图,帮助开发者实现高质量音频信号采集。

red88的博客 807

LeetCode-二叉树的下一个节点

【代码】LeetCode-二叉树的下一个节点。

青衫客36的博客 571

行车记录仪 - 碰撞检测

功能需求 行车记录仪的核心功能是记录,大部分时候,行车记录仪都是在循环录制视频和音频,而设备的存储空间是有限的,因此录制机制一般是循环覆盖录制,如此一些重要的记录(例如:发生碰撞时的记录)就可能会被覆盖,为了避免这种情况的发生,行车记录仪设备就需要感知这些情况并做特殊处理(例如:备份相应时刻的录像数据)。 实现原理 碰撞检测是通过物理芯片G-sensor来实现的,加速度发生变化时G-sensor驱动会将加速度上报给应用层,应用层做相应处理。 G-sensor G-sensor(Gravity se

qazw9600的专栏 5219

java 二维码生成及其标签打印

本文主要内容 二维码生成 二维码标签预览及打印 二维码生成 笔者此次的二维码是通过调用第三方接口生成的,具体流程如下: 根据规范要求调用第三方接口,返回二维码下载地址及二维码图片的属性值(图片大小等) 根据返回的值获取二维码下载地址,根据地址下载二维码图片,保存至本地磁盘及记录数据信息 扫描二维码跳转相应地址,显示资产的基本信息 最终生成的二维码如下图所示: 预览并批量打印二维码标签 先...

孙小牟的博客 4945

【leetcode 66题 之 8 二叉树的下一个节点】

近期诸事繁冗,未延续每日刷题的习惯,再打开博客已是半月之久了。学习还是需要持之以恒,罗胖说,成就=核心算法*每天重复的平方。当然,学习还是要从兴趣出发,在上下求索中不算优化,设置好学习率,切莫下山太快,也切莫下山太慢,愿诸君都能经过反复迭代,达到全局最优点。 本题为剑指offer第8题: 题目描述: 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅...

weixin_32087115的博客 2187

OpenCLI入门:让任何网站变成你的命令行工具(超详细版)

最有用的工具,往往是最简单的。 opencli就是这样。 它不会帮你写代码,不会帮你做决策,但它能把200+个平台装进你的命令行。 让你用最简单的方式,获取最丰富的数据。

weixin_66295112的博客 2094

二叉树中序的下一个结点

题目 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 考察对二叉树遍历的理解 # -*- coding:utf-8 -*- # class TreeLinkNode: # def __init__(self, x): # self.val = x # self...

北歌的博客 366

Vofa+使用笔记(1):用Vofa+通过串口连接显示波形

1. 介绍 Vofa+有三种协议设置 rawdata:你发什么就显示什么,跟普通的串口助手一样 firewater:最简单在VOFA+里绘制波形的协议,建议仅在通道数量不多、发送频率不高的时候使用。 justfloat:有一定的数据格式,此协议非常适合用在通道数量多、发送频率高的时候。 2. 使用步骤 设置号下面三个地方,使用的协议以及传输的方式 拉出控件 (最开始上位机没有识别到你的数据的时候,右边是没有数据显示的,如果你想要y轴显示什么数据,右边设置显示也可以,右键波形图然后Y轴设置也行) 把进

苏释州的博客 5万+

Cadence数模混合仿真实战:从Verilog到ADE L的完整流程解析

本文详细解析了Cadence数模混合仿真的完整流程,从Verilog代码编写到ADE L仿真环境配置。通过实战案例讲解如何创建Config文件、搭建混合信号原理图,并分享提高仿真效率的技巧和常见问题排查方法,帮助工程师掌握这一关键芯片设计验证技术。

weixin_29246195的博客 989

python 二叉树的下一个结点

''' 题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。 注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 ''' # -*- coding:utf-8 -*- # class TreeLinkNode: # def __init__(self, x): # self.val = x # self.left ...

WYXHAHAHA123的博客 333

[AI] 本地部署 Dify 遇到 Internal Error?一文彻底解决密码不一致引发的问题

摘要:Dify本地部署常见InternalError错误主要由配置残留或密码不一致导致,特别是修改.env文件后未同步清除数据库记录。彻底解决方案包括:1)清理Docker数据;2)删除旧配置和数据库;3)还原源代码;4)重建.env文件;5)重新初始化部署。关键提醒:记录部署路径、备份.env文件并妥善保存密码。该错误本质是配置冲突,最有效方法是完全重置而非调试,保持清晰的部署管理可避免多数InternalError问题。(149字)

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 439

【剑指offer】二叉树的下一个结点

题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 解题思路 如果该结点有右孩子,则返回右子树的最左边的结点; 否则,则向上找该结点的父结点,如果父结点是上个父结点的右子树,则一直向上找,直到父结点是上个父结点的左子树,则返回父结点的父结点; 我也不知道我为什么写的那么啰嗦了,神经病。 我的代码 /*...

u010659877的专栏 126

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【剑指Offer】二叉树的下一个结点

上图所示二叉树,找下一个结点,分四种情况考虑: 结点2——下一个结点为3 结点4——下一个结点为5 结点5——下一个结点为6 结点7——下一个结点为8 而下面所说的第二种情况类似于删除节点中的找后继节点,先判断是否存在右结点,再判断右结点是否存在左结点,如果存在左结点,就一直找到最下面的一个左结点,否则下一个结点就为右结点。 第一种情况是找父节点。 结点2和4都是在找父节点或者祖...

ncc1995的博客 285

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【剑指Offer-Java】二叉树的下一个结点

二叉树的下一个结点题目描述思路实现 题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 思路 首先看当前结点有无右子树 1.有右子树,则中序遍历下一个结点是右子树的最左结点 2.无右子树,再看该节点是其父结点的左结点还是右结点 2.1左结点:下一个就是当前结点的...

IT Crowd的博客 183

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

剑指offer JZ8 二叉树的下一个结点

接下来讨论没有右子树的情况,如果当前节点是父节点的左子节点那么返回当前节点的父节点,比如说d节点的下一个节点是b节点,如果当前节点是父节点的右子节点,那么就继续向上,回溯寻找下一个节点,直到找到当前节点是父节点的左子节点或父节点为空,返回当前节点的父节点,比如说i节点的下一个节点是a节点。需要注意的是需要考虑边界条件是否合法,树中只有一个节点的情况,当前节点是中序遍历的最后一个节点,是否能正确处理,并返回正确结果。树中从父节点指向子节点的指针用实线表示,从子节点指向父节点的用虚线表示。

qq_74980411的博客 1777
上一篇: 旋转数组的最小数字
下一篇: #### 146. LRU Cache ####
云水谣CS
博客等级 码龄9年 8粉丝 268原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值