二叉搜尋樹的第k個結點

2021-09-13 03:39:49 字數 964 閱讀 9606

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

二叉搜尋樹:中序遍歷就相當於從小到大排列

二叉查詢樹(英語:binary search tree),也稱二叉搜尋樹、有序二叉樹(英語:ordered binary tree),排序二叉樹(英語:sorted binary tree),是指一棵空樹或者具有下列性質的二叉樹:

任意節點的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值;

任意節點的右子樹不空,則右子樹上所有結點的值均大於它的根結點的值;

任意節點的左、右子樹也分別為二叉查詢樹;

沒有鍵值相等的節點。

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

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class solution:

# 返回對應節點treenode

def __init__(self):

self.res =

def kthnode(self, proot, k):

if not proot or k==0:

return none

self.dfs(proot)

if 0return self.res[k-1]

else:

return none

def dfs(self,root):

if not root:

return

self.dfs(root.left)

self.dfs(root.right)

二叉搜尋樹第k個結點

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

二叉搜尋樹的第k個結點

二叉搜尋樹的第k個結點 題目描述 給定一顆二叉搜尋樹,請找出其中的第k大的結點。例如,5 3 7 2 4 6 8 中,按結點數值大小順序第三個結點的值為4。思路 二叉搜尋樹為關鍵字排序 左子樹 根 右子樹 二叉樹的中序遍歷的訪問順序為 左子樹 根 右子樹 故找出二叉搜尋樹中第k大的節點實質為找出中序...

二叉搜尋樹的第k個結點

給定一棵二叉搜尋樹,請找出其中的第k小的結點。例如,5,3,7,2,4,6,8 中,按結點數值大小順序第三小結點的值為4。時間限制 1秒 空間限制 32768k 熱度指數 146968 中序遍歷二叉搜尋樹得到的則為乙個有序的陣列。因此,通過中序遍歷二叉搜尋樹則可得到結果 struct treenod...