网易首页 > 网易号 > 正文 申请入驻

文心一言宣布4月1日起全面免费。。

0
分享至

专栏:50多种数据结构彻底征服

专栏:50多种经典图论算法全部掌握

最近文心一言宣布4月1日免费了,这确实是一个好消息,虽然百度的产品负面评价比较多,主要是百度搜索时候的广告和网盘限速,但百度在搜索这块的技术还是有的。

百度太急功近利了,AI大模型一出来的时候就想收费,我常用的AI搜索有Kimi,文心一言,腾讯元宝,豆包,讯飞星火,通义千问,天工超能……有十几个,目前也只有文心一言敢收费。目前文心一言4.0还是收费的,只有3.5是免费的。之前想充值体验一下的,这次正好免费了,到时候看下效果怎么样?不过我觉得这次免费应该是受DeepSeek的影响,文心一言再不免费,估计用户要全部流失了。

--------------下面是今天的算法题--------------

来看下今天的算法题,这题是LeetCode的第99题:恢复二叉搜索树。

问题描述

来源:LeetCode第99题

难度:中等

给你二叉搜索树的根节点 root ,该树中的 恰好两个节点的值被错误地交换 。请在不改变其结构的情况下,恢复这棵树 。

示例1:


输入:root = [1,3,null,null,2] 输出:[3,1,null,null,2] 解释:3 不能是 1 的左孩子,因为 3 > 1 。交换 1 和 3 使二叉搜索树有效。

示例2:


输入:root = [3,1,4,null,null,2] 输出:[2,1,4,null,null,3] 解释:2 不能在 3 的右子树中,因为 2 < 3 。交换 2 和 3 使二叉搜索树有效。

  • 树上节点的数目在范围 [2, 1000] 内

  • -2^31 <= Node.val <= 2^31 - 1

问题分析

这题说的是一颗二叉搜索树的两个节点被错误的交换,让我们恢复这棵二叉搜索树。

我们知道 二叉搜索树的中序遍历结果是有序的 ,我们只需要对这棵二叉搜索树进行中序遍历,就可以找出这两个错误的节点,最后交换它们的值即可。

比如正常二叉搜索树中遍历的结果是:[1,2,3,4,5],是有序的,由于错误交换两个节点,比如2和4交换,导致中序遍历的结果变成[1,4,3,2,5],在中序遍历的时候每次都会和前一个节点值比较,如果当前节点比前一个节点值小,说明出现了错误的节点。

比如第一次3比4小,说明4(pre)是第一个错误节点,第二次是2比3小,说明2(cur)是第二个错误节点,最后交换它们的值即可。

JAVA:

private TreeNode pre;// 前一个节点 private TreeNode first;// 第一个错误节点 private TreeNode second;// 第二个错误节点 public void recoverTree(TreeNode root) {     inorder(root);// 二叉树的中序遍历     // 交换两个节点     int tmp = first.val;     first.val = second.val;     second.val = tmp; } private void inorder(TreeNode cur) {     if (cur == null)         return;     inorder(cur.left);// 递归左子树     // 先找第一个错误节点,如果当前节点比前一个节点值小,说明前一个节点是错误的。     if (first == null && pre != null && cur.val < pre.val)         first = pre;     // 第一个错误节点找到之后再找第二个。     if (first != null && cur.val < pre.val)         second = cur;     pre = cur;// 更新前一个节点     inorder(cur.right);// 递归右子树 }

C++:

private:     TreeNode *pre;// 前一个节点     TreeNode *first;// 第一个错误节点     TreeNode *second;// 第二个错误节点     void inorder(TreeNode *cur) {         if (cur == nullptr)             return;         inorder(cur->left);// 递归左子树         // 先找第一个错误节点,如果当前节点比前一个节点值小,说明前一个节点是错误的。         if (first == nullptr && pre && cur->val < pre->val)             first = pre;         // 第一个错误节点找到之后再找第二个。         if (first && cur->val < pre->val)             second = cur;         pre = cur;// 更新前一个节点         inorder(cur->right);// 递归右子树     } public:     void recoverTree(TreeNode *root) {         inorder(root);// 二叉树的中序遍历         // 交换两个节点的值         int tmp = first->val;         first->val = second->val;         second->val = tmp;     }

Python:

def recoverTree(self, root: Optional[TreeNode]) -> None:     self.pre = None  # 前一个节点     self.first = None  # 第一个错误节点     self.second = None  # 第二个错误节点     def inorder(cur):         if cur is None:             return         inorder(cur.left)  # 递归左子树         # 先找第一个错误节点,如果当前节点比前一个节点值小,说明前一个节点是错误的。         if self.first is None and self.pre is not None and cur.val < self.pre.val:             self.first = self.pre             # 第一个错误节点找到之后再找第二个。         if self.first is not None and cur.val < self.pre.val:             self.second = cur         self.pre = cur  # 更新前一个节点         inorder(cur.right)  # 递归右子树     inorder(root)  # 二叉树的中序遍历     # 交换两个节点     self.first.val, self.second.val = self.second.val, self.first.val

笔者简介

博哥,真名:王一博,毕业十多年, 作者,专注于 数据结构和算法 的讲解,在全球30多个算法网站中累计做题2000多道,在公众号中写算法题解800多题,对算法题有自己独特的解题思路和解题技巧,喜欢的可以给个关注,也可以 下载我整理的1000多页的PDF算法文档 。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
我月入5万婆婆要我上交4万8,拒交后老公换门锁,两天后婆家傻眼

我月入5万婆婆要我上交4万8,拒交后老公换门锁,两天后婆家傻眼

千秋文化
2026-06-12 20:11:55
特朗普威胁:征收100%报复性关税

特朗普威胁:征收100%报复性关税

第一财经资讯
2026-06-27 10:16:04
雷佳音喊话网友支持《抓特务》,网友:您“走个面”请我看

雷佳音喊话网友支持《抓特务》,网友:您“走个面”请我看

阿乐碎碎念
2026-06-26 12:42:35
美联储加息只是烟雾弹?沃什暗度陈仓,39万亿美债才是真正目标?

美联储加息只是烟雾弹?沃什暗度陈仓,39万亿美债才是真正目标?

王爷说图表
2026-06-26 16:05:40
表决结果出炉,55:44!郑丽文出手后,朱立伦洪秀柱方面跟进

表决结果出炉,55:44!郑丽文出手后,朱立伦洪秀柱方面跟进

快乐彼岸
2026-06-27 13:45:01
中国男篮14人大名单基本确定,七名球员离队,杨瀚森或无缘首发!

中国男篮14人大名单基本确定,七名球员离队,杨瀚森或无缘首发!

去山野间追风
2026-06-27 13:11:47
比亚迪旗下多家直营店撤出,门店转手经销商…

比亚迪旗下多家直营店撤出,门店转手经销商…

新浪财经
2026-06-26 14:53:26
我只靠死记“集合竞价”,在3年内把28万本金做到了810万,全干货

我只靠死记“集合竞价”,在3年内把28万本金做到了810万,全干货

一方聊市
2026-06-26 11:15:06
当33岁杨紫与34岁肖战站在一起,我才明白什么叫顶级自律

当33岁杨紫与34岁肖战站在一起,我才明白什么叫顶级自律

星宿影视鸭
2026-06-26 16:46:58
大捷!金伯恩沙嘴升起乌克兰国旗,乌军兵不血刃收复战略要地

大捷!金伯恩沙嘴升起乌克兰国旗,乌军兵不血刃收复战略要地

史政先锋
2026-06-26 13:18:32
癌症扩散转移,大多数不能手术,记住这一味草药泡水喝!

癌症扩散转移,大多数不能手术,记住这一味草药泡水喝!

肿瘤科王红军
2026-06-27 09:30:19
300087,将被ST!下周一停牌1天

300087,将被ST!下周一停牌1天

证券时报e公司
2026-06-27 11:43:35
女卫生员怀孕咬定是我的,我被开除,5年后我开迈巴赫停在她摊前

女卫生员怀孕咬定是我的,我被开除,5年后我开迈巴赫停在她摊前

千秋文化
2026-06-24 19:59:19
世界杯预测:哥伦比亚11/12葡萄牙,约旦02/03阿根廷,英格兰2-0

世界杯预测:哥伦比亚11/12葡萄牙,约旦02/03阿根廷,英格兰2-0

梅亭谈
2026-06-27 07:56:57
印度正在毒杀全世界?7亿人的排泄物,毁了人类积攒百年的抗生素?

印度正在毒杀全世界?7亿人的排泄物,毁了人类积攒百年的抗生素?

阿器谈史
2026-06-25 14:17:40
韩红“走个面”翻车事件升级!其戒指、手串、腕表被网友追问价格

韩红“走个面”翻车事件升级!其戒指、手串、腕表被网友追问价格

火山詩话
2026-06-24 15:26:03
回来吧!曝800w球队选项被拒绝:勇士3冠中锋成自由球员!

回来吧!曝800w球队选项被拒绝:勇士3冠中锋成自由球员!

运筹帷幄的篮球
2026-06-27 15:22:46
央视曝光奇葩“折叠纸头盔”:实测徒手用力一拧,7根骨架全部被折断

央视曝光奇葩“折叠纸头盔”:实测徒手用力一拧,7根骨架全部被折断

91.6陕西交通广播
2026-06-26 07:05:51
马斯克向太空要电,GobiX 在戈壁给 AI 找到了答案

马斯克向太空要电,GobiX 在戈壁给 AI 找到了答案

极客公园
2026-06-25 23:30:38
不提倡开水冲鸡蛋的食用方法

不提倡开水冲鸡蛋的食用方法

新浪财经
2026-06-25 05:36:09
2026-06-27 16:19:00
数据结构和算法
数据结构和算法
专门介绍和写算法题解的号
273文章数 4关注度
往期回顾 全部

科技要闻

GPT-5.6发布,你暂时用不了!Mythos也放行

头条要闻

美国专家:亚洲秩序正在转变 中国统一可能"不战而胜"

头条要闻

美国专家:亚洲秩序正在转变 中国统一可能"不战而胜"

体育要闻

世界杯最火门将,站到了阿根廷和梅西面前

娱乐要闻

四提白玉兰终封后,杨紫:仍觉不真实

财经要闻

OpenAI推迟IPO重创软银!

汽车要闻

首搭华为乾崑智驾ADS5 启境GT7上市售价20.99万-32.99万元

态度原创

旅游
手机
亲子
房产
军事航空

旅游要闻

暑期自驾游高峰将至 国内乌鲁木齐成都等地热门

手机要闻

W25周排名分析:仅前二变化,vivo、OPPO、小米等全没变

亲子要闻

果然还是哥哥比较厉害

房产要闻

全国高考大放水,300分就能上本科!论上岸率,海南没输过!

军事要闻

黎以美达成三方框架协议

无障碍浏览 进入关怀版