每天一道剑指offer-二叉树的下一个结点

剑指offer之java/C++实现(完整版) GitHub地址: https://github.com/krishhh5/offer/tree/master/h 阅读详情

题目

每天一道剑指offer-二叉树的下一个结点
https://www.nowcoder.com/practice/ef068f602dde4d28aab2b210e859150a?tpId=13&tqId=11215&tPage=4&rp=3&ru=%2Fta%2Fcoding-interviews&qru=%2Fta%2Fcoding-interviews%2Fquestion-ranking

题目详述

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

题目详解

思路

分析二叉树的下一个节点,一共有以下情况:
1.二叉树为空,则返回空;
2.节点右孩子存在,则设置一个指针从该节点的右孩子出发,一直沿着指向左子结点的指针找到的叶子节点即为下一个节点;
3.节点不是根节点。如果该节点是其父节点的左孩子,则返回父节点;否则继续向上遍历其父节点的父节点,重复之前的判断,返回结果。代码如下:

代码

/*
public class TreeLinkNode {
    int val;
    TreeLinkNode left = null;
    TreeLinkNode right = null;
    TreeLinkNode next = null;

    TreeLinkNode(int val) {
        this.val = val;
    }
}
*/
public class Solution {
    public TreeLinkNode GetNext(TreeLinkNode pNode)
    {
        if(pNode == null)
            return null;
        if(pNode.right != null)
        {//如果右子树不为空,那么中序遍历的下一个节点就是右子树的中的最左的那个节点
            TreeLinkNode temp = pNode.right;
            while(temp.left != null)
                temp = temp.left;
            return temp;
        }
        TreeLinkNode temp = pNode.next;//父节点
        TreeLinkNode pre = pNode;//当前节点
        while(temp != null)
        {
            if(temp.left == pre)
                return temp;//如果当前节点pre是父节点的左子树,那么父节点就是下一个节点,终止循环
            pre = temp;//如果不是,那么就pre指向父节点
            temp = temp.next;//父节点指向自己的父节点,也就是向上一层移动
        }
        return temp;
    }
}
【回眸】剑指offer(一)剑指offer怎么刷 最近有刷算法方面的需要,直接搜出来的学习建议和技巧都太宽泛,而且夹杂着很多广告。借助第二大脑给自己提了一些建议和计划,希望也能帮助到屏幕面前的你! 阅读详情

相关推荐

Bioconductor核心包(GO.db等)安装失败排查指南:从版本冲突到网络优化

本文详细解析了Bioconductor核心包(如GO.db)安装失败的常见原因及解决方案,包括版本冲突、网络问题和依赖关系。通过版本检查、镜像配置和依赖管理等方法,帮助用户高效解决安装难题,提升R语言生物信息学分析的工作效率。

weixin_29066781的博客 425

剑指offer刷题汇总

前言      从今天开始在牛客刷剑指offer,希望每天打卡几个算法,提高自己的编程水平。在优快云做一下记录,随时更新,一起学习吧。 目录大全 数组 剑指offer ( 一 ):二维数组中的查找 剑指offer ( 六 ):旋转数组的最小数字 剑指offer ( 十三 ):调整数组顺序使奇数位于偶数前面【代码完整性】 剑指offer(二十八):数组中出现次数超过一半的数字【 时间效率】...

守得云开见月明 5825

DataEaseV2.9 本地开发环境搭建与调试指南

本文详细指导如何搭建DataEase V2.9的本地开发环境,涵盖从软件准备、源码获取、数据库初始化到在IDEA中配置、编译和调试的全过程。重点解决了本地运行环境的关键配置与常见问题,帮助开发者高效开启DataEase的定制化开发与二次开发。

weixin_29290863的博客 141

150页的剑指Offer解答PDF,它来了!!!

它来了!!! 终于整理出了第一版剑指Offer的PDF,主要以Java语言为主,一共67道题,100多页。 领取方式如下(无套路直接获取百度网盘的 ???? 链接,如果链接失效可以直接找我): 【秦怀杂货店】公众号内发送:剑指Offer 刷题仓库:CodeSolution ,具体的分类如下: 数组 剑指Offer(二)–二维数组中的查找 剑指Offer(十三)–调整数组顺序使奇数位于偶数前面 剑指Offer(十九)-- 顺时针打印矩阵 剑指Offer(二十八)-- 数组中次数出现超过一半的数字 剑指

秦怀杂货店 6976

绝缘检测原理和绝缘电阻计算方法

绝缘检测的目的就是计算绝缘电阻,当绝缘电阻低于某个阈值,则很可能会造成电池短路、漏电,威胁人员安全

m0_56208280的博客 4万+

STM32 FOC电机控制:手把手教你用CubeMX配置TIM1中心对齐PWM(含代码避坑)

本文详细解析了STM32 FOC电机控制中TIM1中心对齐PWM的配置方法,涵盖CubeMX图形化设置、HAL库代码调用及常见问题排查。特别针对L6230Q驱动芯片的使能逻辑和死区时间配置提供实用指南,帮助开发者高效实现无刷电机的高性能控制。

weixin_27027459的博客 442

剑指offer算法题018:二叉树的镜像

小编在求职找找工作期间剑指offer上的算法题刷了很多遍,并且每道题小编当时都总结了一种最适合面试时手撕算法的最优解法。考虑到剑指offer算法题在面试中的高频出现,小编每天和大家分享一道剑指offer上的算法题,以及小编总结的答案。下面是第018道剑指offer算法题: 题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 二叉树的镜像定义:源二叉树 分析: 典型的递归问题,递归在树相关问题中很常见,不是很难,大家多写写画画就可以理解了,算法题一定要建立自己的理解上 /** public class

我的博客 298

四非人的保研之路,2024(2025届)四非计算机的保研经验分享(西南交通、苏大nlp、西电、北邮、山软、山计、电科、厦大等)

本身我就是福建人,xmu 3小时就能到家,然后导这边毕业要求容易,不想读博,达到要求就能放实习,每周打卡35h,比较自由,遂考虑。北邮弱com,联系了蛮多老师,几乎都给了考核机会,面试的老师好几位都考核人工智能基础,会问你卷积的计算,问的还是蛮细的。当时结果是暂定,以为是稳了,遂没联系其他老师,但是之后询问发现只是候补,懒得联系其他老师,928候补到,放弃。东北大学,2000人大机试,入营点送,全国巡回面试,每个人就面不到10分钟,我就被问了3个问题就结束了,候补。科研组,导师有人脉,想读博出成果可以去。

专注于AI领域前沿知识,业余爱好开发软件 4351

剑指Offer Java版 66题刷题笔记汇总

备战校招研发岗,无论笔试还是面试算法都占很大比重的,加油! 写在前面 此文章为刷题笔记的汇总篇,包含《剑指Offer》66道算法题的个人解题思路及Java代码。 代码同步发布在GitHub:https://github.com/JohnnyJYWu/offer-Java 所有题目均可在牛客网在线编程平台进行调试。 网址:https://www.nowcoder.com/ta/coding...

机盐的博客 3735

金属表面粗糙度对信号的影响

之前的文章中,已经采用CST中的微带线模块进行了很多的仿真分析,本文将再次利用这些模块,从另外一个角度去探讨关于传输线的使用问题--金属的表面粗糙度。 众所周知,数据传输中,当速率越来越高时,信号在金属介质中的趋肤效应就愈发明显,能量就会更多地集中于金属的表面进行流动,此时,如果金属表面不再光滑而是凹凸不平,能量的传输过程就会产生波动,当这种波动积累到一定的量级,就会严重影响到传输线的阻抗稳定性,从而导致信号失真和传输异常。

一只豌豆象的博客 2895

【PCIe 总线及设备入门学习专栏 3.2.2 -- PCIe 中什么是 SR-IOV】

SR-IOV(Single Root I/O Virtualization)是 PCIe 规范中的一种技术,允许物理 PCIe 设备(称为 Physical Function, PF)虚拟化为多个虚拟设备(称为 Virtual Functions, VFs),使多个操作系统或虚拟机能够共享同一个物理设备。SR-IOV:一种 PCIe 虚拟化技术,允许将一个物理 PCIe 设备虚拟化为多个虚拟设备。:物理设备的主要管理接口。:PF 的轻量级副本,分配给虚拟机或操作系统。

CodingCos的博客 1513

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

今日你如约而至了吗?每天坚持至少打卡一道,保持正常的手感。今天还是一道二叉树的题,哈哈,没办法,全剩下链表或者二叉树的题了,不做也得做,兄嘚,硬着头皮上啊。上题: 题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 方法一:常规法 分析:需要按照中序遍历的顺利找到给定节点的下一个节点,那我们需要得到中序遍历的结果,但是各种遍历都是从头开始的,所以在遍历之前需要找到头结点(题目中告诉了你它有父节点指针,这个就是.

qq_34428410的博客 151

WINCC7.3破解文件

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

剑指offer算法题024:二叉树中和为某一值的路径

小编在求职找找工作期间剑指offer上的算法题刷了很多遍,并且每道题小编当时都总结了一种最适合面试时手撕算法的最优解法。考虑到剑指offer算法题在面试中的高频出现,小编每天和大家分享一道剑指offer上的算法题,以及小编总结的答案。下面是第024道剑指offer算法题: 题目描述 输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 分析 递归遍历二叉树即可 import java.util.ArrayLis

我的博客 385

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

剑指offer算法题004:重建二叉树

小编在求职找找工作期间剑指offer上的算法题刷了很多遍,并且每道题小编当时都总结了一种最适合面试时手撕算法的最优解法。考虑到剑指offer算法题在面试中的高频出现,小编每天和大家分享一道剑指offer上的算法题,以及小编总结的答案。下面是第004道剑指offer算法题: 题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉

我的博客 281

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

牛客网剑指offer java 全部题解

https://blog.youkuaiyun.com/WantFlyDaCheng/article/details/87887156       每天一道剑指offer-二维数组中的查找 https://mp.weixin.qq.com/s?__biz=MzI5MzYzMDAwNw==&mid=2247484262&idx=2&sn=83fb17338c606e2080fe7...

hery186的专栏 2003

剑指offer总结(JAVA版)

文章目录前言1、数据结构类题目2、具体算法类题目3、节奏与方法4、组队学习 前言 ​ 今天已经是2020/7/21了,之前有刷过offer66但是已经忘了差不多了,最近两个月面试的机会越来越多。目前来说已经无暇顾及leecode更多的算法题目了。目前还是打算较为系统的在刷一遍offer,好好整理一下,把每一题都给吃投。从今天开始,开启我的每天6题计划。我将按照下列分类,稳步推进我的算法训练。 ​ 《剑指offer》剖析了80个典型的编程面试题,系统整理基础知识、代码质量、解题思路、优化效率和综合能力这5个面

qq_43393430的博客 469

剑指offer算法题022:从上往下打印二叉树

小编在求职找找工作期间剑指offer上的算法题刷了很多遍,并且每道题小编当时都总结了一种最适合面试时手撕算法的最优解法。考虑到剑指offer算法题在面试中的高频出现,小编每天和大家分享一道剑指offer上的算法题,以及小编总结的答案。下面是第022道剑指offer算法题: 题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 分析 这题不难,但是很经典。看答案前建议自己先想一下思路 import java.util.ArrayList; import java.util.LinkedList;

我的博客 297

每天一道剑指offer-重建二叉树

题目描述:、 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 思路: 根据二叉树前序遍历和终须遍历可以唯一确定一颗二叉树 前序遍历顺序:先遍历根节点,在前序遍历左子节点,最后前序遍历右子节点 中序遍历顺序:先遍...

weixin_42069523的博客 261

java 版剑指offer算法集锦

微信公众号:徐公码字(stormjun94)来源:https://github.com/gdutxiaoxu/Android_interview 前言 现如今,如果你想进入大厂,腾讯,阿里,头条,拼多多等,不管是社招还是校招,肯定都会面试到算法的。 相信很多人有这样的想法,面试的时候早火箭,工作的时候拧螺丝。确实,这种情况非常常见,我也认同。但没办法,谁叫我们想进入大厂呢,主动权掌握在人家手里。 不过,这种情况也可以理解。怎么在几轮面试中确定面试者的水平呢? 肯定是考察算法,基础这些,原理这些。 虽然这.

徐公,微信公众号同名 1038

每天一道剑指offer-二叉树的镜像

辣条走起,每个月的刷题99元奖励靠大家了前言 今天的题目昨天的题解题目 每天一道剑指offer-二叉树的镜像题目详述 操作给定的二叉树,将其变换为源二叉树的镜像。题目详解...

WantFlyDaCheng的博客 155

每天一道剑指offer-从上往下打印二叉树

辣条走起,每个月的刷题99元奖励靠大家了前言 今天的题目题目 每天一道剑指offer-从上往下打印二叉树题目详述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。题...

WantFlyDaCheng的博客 201
上一篇: 每天一道剑指offer-二叉树的下一个结点
下一篇: 牛客网剑指offer java 全部题解
程序员乔戈里
博客等级 码龄8年 1057粉丝 220原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值