Python 二叉搜尋樹的第k個節點

2021-09-30 14:33:49 字數 913 閱讀 6293

給定一顆二叉搜尋樹,請找出其中的第k大的結點。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按結點數值大小順序第三個結點的值為4。

# -*- coding:utf-8 -*-

'''二叉搜尋樹的第k個節點

題目描述

給定一顆二叉搜尋樹,請找出其中的第k大的結點。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,

按結點數值大小順序第三個結點的值為4。

'''class treenode:

def __init__(self, x):

self.val = x

self.left = none

self.right = none

class solution:

# 返回對應節點treenode

def kthnode(self, proot, k):

# write code here

if not proot or k == 0:

return none

res = self.sub_tree(proot)

if len(res) < k:

return none

else:

return res[k - 1]

def sub_tree(self, root):

res =

if not root:

return none

if root.left:

res.extend(self.sub_tree(root.left))

if root.right:

res.extend(self.sub_tree(root.right))

return res

二叉搜尋樹第k個結點

題目描述 給定一顆二叉搜尋樹,請找出其中的第k大的結點。例如,5 3 7 2 4 6 8 中,按結點數值大小順序第三個結點的值為4。這個題目考慮到可以用中序遍歷求解,因為中序遍歷是搜尋二叉樹的從大到小的順序,對二叉樹進行中序遍歷,每次經過結點k值減一,一直到k值等於1,對應的結點就是要尋找的點,這個...

樹 二叉搜尋樹的第K個節點

給定一棵二叉搜尋樹,請找出其中的第k小的結點。例如,5,3,7,2,4,6,8 中,按結點數值大小順序第三小結點的值為4。分析 二叉搜尋樹就是每個節點x,大於其左子樹的值,小於其右子樹的值,其中序排序是遞增的。使用中序遍歷,每遍歷乙個節點,k 1,直到k減到1,即為第k小的節點 function t...

二叉搜尋樹的第k個節點

題目描述 給定一顆二叉搜尋樹,請找出其中的第k大的節點。只需中序遍歷一顆二叉搜尋樹,就很容易找出它的第k大節點 非遞迴方法 class solution treenode pnode s.top s.pop if cnt k return pnode p pnode right return nul...