剑指offer-刷题笔记-中难题-JZ8 二叉树的下一个结点

【回眸】剑指offer(一)剑指offer怎么刷 最近有刷算法方面的需要,直接搜出来的学习建议和技巧都太宽泛,而且夹杂着很多广告。借助第二大脑给自己提了一些建议和计划,希望也能帮助到屏幕面前的你! 阅读详情

剑指offer-刷题笔记-中难题-JZ8 二叉树的下一个结点

版本1-暴力方法

/*
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:
    vector<TreeLinkNode*> vin;
    //中序遍历
    void getTreeNodeValue(TreeLinkNode* pNode)
    {
        if(pNode->left != NULL)
        {
            //vin.push_back(pNode->left->val);
            getTreeNodeValue(pNode->left);
        }
        
        if(pNode != NULL)
        {
            vin.push_back(pNode);
        }

        if(pNode->right != NULL)
        {
            //vin.push_back(pNode->right->val);
            getTreeNodeValue(pNode->right);
        }  
    }
    TreeLinkNode* GetNext(TreeLinkNode* pNode) {
        if(pNode == NULL)
            return NULL;
         //传入的为局部子树,意思是要自己找到根节点
        TreeLinkNode* root = pNode;
        while (root->next) {
            root = root->next;
        } 
        getTreeNodeValue(root);
        for(int i = 0;i < vin.size();i++)
        {
            if(pNode->val == vin[i]->val)
            {
                return vin[i+1];
            }else{
                continue;
            }
        }
        return NULL;
    }
};

版本2- 利用中序遍历性质

/*
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;
        // 若该结点存在右子树
        if (pNode->right) {
            TreeLinkNode* rightChild = pNode->right; 
            // 寻找右子树上的最左孩子
            while (rightChild->left)
                rightChild = rightChild->left;
            return rightChild;
        }
        // 若不存在右子树,寻找第一个右父亲
        while (pNode->next) {
            if (pNode->next->left == pNode) 
                return pNode->next; 
            pNode = pNode->next;
        }
        return NULL;
    }
};
剑指offer所有编程练习总结分析 给出剑指offer所有题目描述和对应的解题思路,并且在最有给出对应的代码展示和测试内容 由于牛客剑指Offer题目经过整理和筛选,是面试备考的经典资源之一,因此它的重要性在面试准备过程中是很高的。做这些题目可以帮助面试者熟悉常见的面试题型、巩固基础知识、提升编程能力,为应对面试提供了很好的准备。然而,还需注意不仅仅局限于做题,理解背后的原理和思想同样重要,以便能够在面试时灵活运用和展示自己的能力。 阅读详情

相关推荐

PaddleOCR在医疗票据识别中的实战:从部署到业务字段提取

本文详细介绍了PaddleOCR在医疗票据识别中的实战应用,重点阐述了其离线部署方案与PP-OCRv3模型选型优势。针对医疗票据敏感数据不出本地的合规要求,文章提供了从环境搭建、模型配置到核心字段提取策略的完整流程,并分享了性能优化与系统集成的实践经验,有效解决了医疗票据自动化录入的难题。

weixin_29271053的博客 236

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

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

qq_74980411的博客 1777

在中国大陆使用 LiveKit 集成阿里云语音交互服务

通过集成阿里云的语音和模型服务,我们可以快速构建出适合中国用户的 LiveKit 智能语音应用。LiveKit Agents 框架的模块化设计使得替换底层服务变得异常简单,只需要更换相应的插件实例即可。使用 WebSocket 版本的阿里云 ASR 接口以获得更低的延迟。利用通义千问的 Function Calling 能力对接智能家居或企业内部 API。结合 LiveKit 的视频处理能力,打造具备视觉交互的数字人。希望这篇博客能为你在实时音视频与 AI 结合的探索之路上提供帮助!

星空漫野 1236

剑指offer刷题宝典--第1节

剑指offer刷题宝典,重点总结,链表,树

weixin_41171614的博客 1275

港口集装箱码头运营FlexSim仿真

列队4中的集装箱会根据不同类型的集装箱会放置在不同的堆场,因此根据前面对集装箱设置的标签Type的数值不同,设置不同的发送端口。集装箱到达列队3后,会有70%的集装箱到达堆场,30%的集装箱运出港口,因此在Queue列队3的Flow界面设置按照百分比发送端口,其中70%发送到端口1,即发送到列队4等待进入堆场,30%发送到端口2,即发送至出闸口。通过上述对比表格可以看出,当集卡数量在10的时候,岸桥和场桥的设备利用率达到了最高,当集卡数量为12的时候场桥1和场桥3的利用率有所下降,因此综合考虑。

m0_72514516的博客 1331

倍福PLC--PERSISTENT断电保持数据和BOOT中各文件对应的解析

将D:\TC3程序\TwinCAT Project146\TwinCAT RT(x86)\Plc 文件夹的中三个替换文件复制到:G:\TwinCAT\3.1\Boot\Plc完成替换,如下图。(2) 找到程序所存的路径,编程电脑的D:\TC3程序\TwinCAT Project146路径下,并选择对应系统平台TwinCAT RT(x86)(3) 控制器断电,拔出内存卡,使用读卡器,在编程电脑中打开:(本次测试读卡器为G盘)(5) 开机完成后,TwinCAT自动运行,当前闪灯频率为50ms。

weixin_41883890的博客 2340

《剑指offer》刷题记录汇总篇

《剑指offer》刷题汇总1 前言2 刷题网站3 刷题笔记汇总 1 前言   最近啃了个把月的数据结构与算法,有点飘了,准备拿牛客网的剑指offer模块练练手,个人觉得自己刚入门(或许还没入),所以这篇博客比较适合想学习数据结构或者刚接触数据机构的新手朋友朋友们,当然,大佬们也可以看看,一是指导,二是差缺补漏。   刷题顺序即题目顺序,时间的话大概一周 2 刷题网站 点击直达:剑指offer 3 刷题笔记汇总 题号 题目 知识点 JZ1 二维数组中的查找 数组、查找 JZ2 替换空格 字

郑德帅 864

Codex 100个真实案例 - 用AI做在线考试系统(自动组卷+防作弊)

本案例使用 Codex 从零搭建一个功能完整的在线考试系统。涵盖题库管理(单选/多选/判断/填空)、智能随机组卷、考试倒计时、自动判分、成绩统计分析、以及多维度防作弊机制(切屏检测、禁止复制粘贴、IP限制等)。前端使用 Vue 3 + Element Plus 构建考试界面,后端使用 Node.js + Express + MySQL 提供 API 服务。全程用自然语言驱动 Codex 完成开发,最终交付一个可直接部署的在线考试平台。

yueyeguzhuo的专栏 78

【剑指Offer刷题】JZ8二叉树的下一个节点(中等)

解析:这个组装传入的子树根节点,其实就是整颗树,中序遍历{5,6,7,8,9,10,11},根节点8的下一个节点就是9,应该返回{9,10,11},后台只打印子树的下一个节点,所以只会打印9,如下图,其实都有指向左右孩子的指针,还有指向父节点的指针,下图没有画出来。树中从父节点指向子节点的指针用实线表示,从子节点指向父节点的用虚线表示。输入分为2段,第一段是整体的二叉树,第二段是给定二叉树节点的值,后台会将这2个参数组装为一个二叉树局部的子树传入到函数GetNext里面,用户得到的输入只有一个子树根节点。

Xiaolan_2001的博客 341

各大厂薪资对比爬虫:Python采集OfferShow爆料数据

print(f"⚠️ API返回错误码: {data.get('code')}, msg: {data.get('msg')}")ax.set_title('各大厂薪资对比 (基于OfferShow爆料数据)', fontsize=16, fontweight='bold')stats.columns = ['人数', '平均年薪', '年薪中位数', '年薪标准差', '平均月薪', '平均月数']print(analyzer.get_position_stats('字节跳动').head(10))

2201_76125261的博客 602

一个 ABAP 工具,能打印系统里某个用户对 BSP 应用的浏览历史记录

只要一个用户在 SAP ABAP 系统里浏览过 BSP 页面,会留下浏览历史记录。本工具会解析出这些记录,打印出该用户浏览的历史事件,和浏览过的页面名称。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 546

【牛客 - 剑指offer】JZ8 二叉树的下一个结点 两种方案 Java实现

给定一个二叉树其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的next指针。下图为一棵有9个节点的二叉树。树中从父节点指向子节点的指针用实线表示,从子节点指向父节点的用虚线表示

guliguliguliguli的博客 386

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

剑指offer刷题总记——Java

剑指offerJZ1 二维数组中的查找JZ2 替换空格JZ3 从尾到头打印链表JZ7 斐波那契数列JZ14 链表中倒数第k个节点JZ15 反转链表JZ36 两个链表的第一个公共结点 JZ1 二维数组中的查找 题目:二维数组中的查找 public class Solution { //双重for循环,遍历查找 public boolean Find(int target, int [][] array) { //行遍历,array.length为行数 for(i

小叮当不懒的博客 742

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

剑指offer JZ8 二叉树的下一个结点 常规+优化

原题链接:JZ8 二叉树的下一个结点 描述 给定一个二叉树其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的next指针。下图为一棵有9个节点的二叉树。树中从父节点指向子节点的指针用实线表示,从子节点指向父节点的用虚线表示。 输入描述: 输入分为2段,第一段是整体的二叉树,第二段是给定二叉树节点的值,后台会将这2个参数组装为一个二叉树局部的子树传入到函数GetNext里面,用户得到的输入只有一个子树根节点 返回值描述: 返回传入的子树根节点的下

想买很多漂亮衣服但是买不起的博客 1094

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

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

二叉树的下一个结点剑指Offer JZ8 二叉树的下一个结点1.题目描述思路分析:代码实现代码1:总结规律代码2:暴力解法 剑指Offer JZ8 二叉树的下一个结点 1.题目描述 思路分析: 输入的是一个二叉树的序列与一个结点,输出的该结点在中序遍历中的下一个点。拿到手有点蒙,想一下,练习里先不急着暴力解,肯定是有好方法的。但是直接看这个序列看不出什么规律,不如来看看例子,归纳一下从特殊到一般的规律。 归纳一下:1. 有中序遍历结点在右子树最左端点上的。2.有中序遍历下一个结点是parent的。3.中

自学菜鸡CyanLiuCY的博客 295

剑指offer

​一刷 剑指offer 记录

dwtianwen的博客 1104

(python版)《剑指Offer》JZ57:二叉树的下一个结点

我们以上图为例进行讲解,上图二叉树的中序遍历是d,b,h,e,i,a,f,c,g。我们以这棵树为例来分析如何找出二叉树的下一个结点。 如果一个结点有右子树,那么它的下一个结点就是它的右子树的最左子结点。也就是说从右子结点出发一直沿着指向左子树结点的指针,我们就能找到它的下一个结点。例如,图中结点b的下一个结点是h,结点a的下一个结点是f。 接着我们分析一下结点没有右子树的情形。如果结点是它父结点的左子结点,那么它的下一个结点就是它的父结点。例如,途中结点d的父节点(next)是b,f的父节点(n..

sinat_29950703的博客 313

(最新版2022版)剑指offer之树和二叉树题解

(最新版2022版)剑指offer之树和二叉树题解

weixin_51405802的博客 1455

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

解析:这个组装传入的子树根节点,其实就是整颗树,中序遍历{5,6,7,8,9,10,11},根节点8的下一个节点就是9,应该返回{9,10,11},后台只打印子树的下一个节点,所以只会打印9,如下图,其实都有指向左右孩子的指针,还有指向父节点的指针,下图没有画出来。如果给出的结点无右子节点,且当前结点是其父节点的右子节点,则先要沿着左上方父节点爬树,一直爬到当前结点是其父节点的左子节点为止,返回的就是这个父节点;如果给出的结点无右子节点,且当前结点是其父节点的左子节点,则返回其父节点。

LouHerGetUp的博客 236

【剑指offer】剑指刷题记录(记录所刷题目的通过代码)

写在前面 此博客记录自己在剑指的刷题过程中所有通过的代码,目的在于监督自己每天刷题。持续刷题,持续更新。每天都要记得好好刷题鸭! 通过的代码记录 (1)JZ2 替换空格 这里是考察的字符数组的用法吧,我用了string,网上通用的解法没有引入string。 class Solution { public: void replaceSpace(char *str,int length) { string ans=""; char* str2; for(int

qq_38391210的博客 222

算法刷题专栏介绍

剑指offer,力扣热题,牛客top100

weixin_41171614的博客 1056

刷题笔记 | 剑指offer-JZ8(二叉树的下一个节点)

剑指offer-JZ8(二叉树的下一个节点)

qq_36291615的博客 1031

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

在牛客网刷的,还是跟leetcode一样非acm模式,由于急着暑期实习题量不固定,八股算法轮刷打卡内容偏个人笔记,本人水平一般(代码随想录稀里糊涂刷了一遍),从小白开始分析(甚至会分析语法),尽量一题多解深入探究(一般ac后看看前三个题解发散下思维),希望能对你有帮助。

cangshanjiang的博客 401

最全剑指offer刷题总记——Java(1),讲的太透彻了

在清楚了各个大厂的面试重点之后,就能很好的提高你刷题以及面试准备的效率,接下来小编也为大家准备了最新的互联网大厂资料。* 二分查找2. ACM模式/*int val;*//*}*/没问题/*}*//***//**//***//***//**//**解题思路:*1、遍历链表,复制每个结点,如复制结点A得到A1,将结点A1插到结点A后面;

2401_84692382的博客 936

【剑指offer刷题】JZ4:给定二叉树的前序遍历和中序遍历,重建二叉树

转载请注明出处:https://blog.youkuaiyun.com/loiter2/article/details/107523272 【剑指offer刷题】JZ4:给定二叉树的前序遍历和中序遍历,重建二叉树1、题目分析2、代码实现 该文章只是用来记录一下刷题过程,本文的记录和解答用的Java语言。 1、题目分析 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3

Spikeloiter的博客 423
上一篇: 剑指offer-刷题笔记-中等题-JZ26 树的子结构
下一篇: c++基础知识-指针
xiaoliyu00
博客等级 码龄9年 4180粉丝 122原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值