golang中怎么利用leetcode 恢复二叉搜索树
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,golang中怎么利用leetcode 恢复二叉搜索树,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。二叉搜索树中的两个节
千家信息网最后更新 2026年11月03日golang中怎么利用leetcode 恢复二叉搜索树
golang中怎么利用leetcode 恢复二叉搜索树,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
二叉搜索树中的两个节点被错误地交换。
请在不改变其结构的情况下,恢复这棵树。
示例 1:
输入: [1,3,null,null,2]
1
/
3
\
2
输出: [3,1,null,null,2]
3
/
1
\
2
示例 2:
输入: [3,1,4,null,null,2]
3
/ \
1 4
/
2
输出: [2,1,4,null,null,3]
2
/ \
1 4
/
3进阶:
使用 O(n) 空间复杂度的解法很容易实现。
你能想出一个只使用常数空间的解决方案吗?
解题思路:
1,二叉树的性质:左子树<根<小于右子树
2,如果中序遍历二叉树就能得到一个递增的序列
3,由于只交换了两个位置,假设这两个位置为first,second,则first左边小于first,右边大于first,second的左边都小于second,只需交换first,second位置即可
4,如何得到递增序列?
中序遍历
5,用pre记录中序遍历的上一个位置,如果pre.val>cur.val说明pre的位置放错了,用first,second 记录两个位置,最好交换即可
6,注意,由于使用了全局指针,所以,使用前一定要初始化,否则结果很奇怪
/*** Definition for a binary tree node.* type TreeNode struct {* Val int* Left *TreeNode* Right *TreeNode* }*/var pre,first,second *TreeNodefunc recoverTree(root *TreeNode) {pre=nilfirst=nilsecond =nilmidOrder(root)temp:=first.Valfirst.Val=second.Valsecond.Val=tempreturn}func midOrder(cur *TreeNode){if cur==nil{return}midOrder(cur.Left)if pre!=nil && pre.Val>cur.Val{if first==nil{first=presecond=cur}else{second=cur}}pre=curmidOrder(cur.Right)}
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。
位置
两个
搜索
序列
示例
空间
子树
帮助
输入
输出
复杂
清楚
全局
内容
只需
右边
复杂度
对此
常数
思路
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
精品咖啡豆
互联网科技工作委员会副主任毛军
互联网扶贫科技
金融科技与互联网金融
互联网的科技创新
友谊互联网络科技
润盈互联网科技
掌上梦互联网科技
美国互联网前沿科技
剑昆互联网络科技有限公司临桂
互联网企业和科技型企业
宁夏众和广鑫互联网科技有限公司
成都互联网科技公司工作好不好
哈尔滨屹滨互联网科技有限公司
广西互联网科技孵化中心
华夏恒生科技与互联网科技
互联网在线教育科技创业
互联网公司高科技产品
深圳无忧互联网科技
山东蛋芒互联网科技有限公司
互联网科技图片
高科技互联网
互联网科技上市公司
重庆科技学院互联网
互联网科技股午盘股票涨跌
来此购互联网科技有限公司
互联网与医疗科技
洛阳共同富裕互联网科技有限公司
2021世界互联网领先科技成果发布
艺电能源互联网科技有限公司招聘