Python實(shí)現(xiàn)查找二叉搜索樹第k大的節(jié)點(diǎn)功能示例
本文實(shí)例講述了Python實(shí)現(xiàn)查找二叉搜索樹第k大的節(jié)點(diǎn)功能。分享給大家供大家參考,具體如下:
題目描述
給定一個二叉搜索樹,找出其中第k大的節(jié)點(diǎn)
就是一個中序遍歷的過程,不需要額外的數(shù)組,便利到節(jié)點(diǎn)之后,k減一就行。
代碼1
class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = None class Solution: def __init__(self): self.k = 0 def recursionKthNode(self, Root): result = None if result == None and Root.left: result = self.recursionKthNode(Root.left) if result == None: if self.k == 1: return Root self.k -= 1 if result == None and Root.right: result = self.recursionKthNode(Root.right) return result def KthNode(self, Root, k): if Root == None: return None self.k = k return self.recursionKthNode(Root) Root = TreeNode(5) Root.left = TreeNode(3) Root.left.left = TreeNode(2) Root.left.right = TreeNode(4) Root.right = TreeNode(7) Root.right.left = TreeNode(6) Root.right.right = TreeNode(8) print(Solution().KthNode(Root,3).val)
output : 4
代碼2
class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = None class Solution: def __init__(self): self.k = 0 def InOrder(self, Root): ans = None if Root: if ans == None and Root.left: ans = self.InOrder(Root.left) #往左遍歷 if ans == None and self.k == 1: ans = Root #遍歷到目標(biāo)節(jié)點(diǎn) if ans == None and self.k != 1: #沒有遍歷到目標(biāo)節(jié)點(diǎn),k-- self.k -= 1 if ans == None and Root.right: #往右遍歷 ans = self.InOrder(Root.right) return ans def KthNode(self, Root, k): if Root == None or k <= 0: return None self.k = k return self.InOrder(Root)
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python加密解密算法與技巧總結(jié)》、《Python編碼操作技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進(jìn)階經(jīng)典教程》
希望本文所述對大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
python?os.stat()如何獲取相關(guān)文件的系統(tǒng)狀態(tài)信息
這篇文章主要介紹了python?os.stat()如何獲取相關(guān)文件的系統(tǒng)狀態(tài)信息,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-11-11Python用HBuilder創(chuàng)建交流社區(qū)APP
這篇文章主要講解Python使用HBuilder創(chuàng)建交流社區(qū)APP,使用HBuilder做一個簡單的社區(qū)瀏覽界面,下面文章附有詳細(xì)的代碼,需要的朋友可以參考一下2021-11-11django 按時間范圍查詢數(shù)據(jù)庫實(shí)例代碼
這篇文章主要介紹了django 按時間范圍查詢數(shù)據(jù)庫實(shí)例代碼,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下2018-02-02Python利用shutil模塊實(shí)現(xiàn)文件夾的復(fù)制刪除與裁剪
shutil模塊是對os模塊的補(bǔ)充,主要針對文件的拷貝、刪除、移動、壓縮和解壓操作。本文將利用shutil模塊實(shí)現(xiàn)文件夾的復(fù)制刪除與裁剪,需要的可以參考一下2022-05-05