日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

恢复二叉搜索树Python解法

發(fā)布時(shí)間:2023/12/19 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 恢复二叉搜索树Python解法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

給你二叉搜索樹的根節(jié)點(diǎn) root ,該樹中的 恰好 兩個(gè)節(jié)點(diǎn)的值被錯(cuò)誤地交換。請(qǐng)?jiān)诓桓淖兤浣Y(jié)構(gòu)的情況下,恢復(fù)這棵樹 。

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/recover-binary-search-tree

例:

輸入:root = [1,3,null,null,2]
輸出:[3,1,null,null,2]
解釋:3 不能是 1 的左孩子,因?yàn)?3 > 1 。交換 1 和 3 使二叉搜索樹有效。

解析:

因?yàn)橹挥袃蓚€(gè)節(jié)點(diǎn)出了問題,先對(duì)搜索樹進(jìn)行中序遍歷,如果只有一組逆序?qū)?#xff0c;那么只需要調(diào)換兩個(gè)位置就行了,如果有兩組逆序?qū)?#xff0c;因?yàn)橛疫叺臄?shù)大于左邊的數(shù),所以位置不對(duì)的一定是第一組的第一個(gè)較大的數(shù)和第二組第二個(gè)較小的數(shù),進(jìn)行調(diào)換即可。

# Definition for a binary tree node. # class TreeNode(object): # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = rightclass Solution(object):def __init__(self):self.res = []def recoverTree(self, root):""":type root: TreeNode:rtype: None Do not return anything, modify root in-place instead."""self.mid(root)node1 = None # 第一個(gè)錯(cuò)誤節(jié)點(diǎn)node2 = None # 第二個(gè)錯(cuò)誤節(jié)點(diǎn)for i in range(len(self.res)-1):if self.res[i].val > self.res[i+1].val and node1 == None: # 只有一組逆序?qū)ode1 = self.res[i]node2 = self.res[i+1]elif self.res[i].val > self.res[i+1].val and node1 !=None: # 有兩組逆序?qū)ode2 = self.res[i+1] node1.val, node2.val = node2.val, node1.val # 將兩個(gè)數(shù)進(jìn)行對(duì)調(diào)def mid(self, root): # 中序遍歷if root is not None:self.mid(root.left)self.res.append(root)self.mid(root.right)


?

總結(jié)

以上是生活随笔為你收集整理的恢复二叉搜索树Python解法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。