劍指offer 二叉搜尋樹的第k個結點

2021-09-01 09:24:25 字數 965 閱讀 2991

二叉搜尋樹:根結點的值大於左子樹中任一結點的值,小於右子樹中任一結點的值。

答案:二叉搜尋樹按照中序遍歷得到的結果就是遞增的序列,所以要找第k小結點,可以按照中序遍歷去查詢。

**如下:

# 建立樹的結點

class node:

def __init__(self, a=0):

self.val=a

self.left=none

self.right=none

# 中序遍歷查詢

def midorder(h):

global k

if h==none:

return

if h.left != none:

midorder(h.left)

if k==1:

print(h.val)

k-=1

if h.right != none:

midorder(h.right)

head=node(7)

p0=node(4)

p1=node(9)

p2=node(2)

p3=node(6)

p4=node(8)

p5=node(10)

p6=node(1)

p7=node(3)

p8=node(5)

head.left=p0

head.right=p1

p0.left=p2

p0.right=p3

p1.left=p4

p1.right=p5

p2.left=p6

p2.right=p7

p3.left=p8

k=3midorder(head)

劍指offer 二叉搜尋樹的第k個結點(二叉樹)

給定一棵二叉搜尋樹,請找出其中的第k小的結點。例如,5,3,7,2,4,6,8 中,按結點數值大小順序第三小結點的值為4。對於二叉搜尋樹,使用中序遍歷就能得到排序好的序列 每次訪問乙個節點,計數 1 直到計數為0時返回。struct treenode class solution treenode ...

劍指offer 二叉搜尋樹的第k個節點

esmp esmp 給定一顆二叉搜尋樹,請找出其中的第k大的結點。例如,5 3 7 2 4 6 8 中,按結點數值大小順序第三個結點的值為4。esmp esmp 首先一點要清晰二叉搜尋樹的特點,也就是 左孩子 父節點 右孩子。所以,根據這一特點可知,二叉搜尋樹的中序遍歷結果就是乙個公升序的序列。題目...

劍指offer 二叉搜尋樹的第k個結點

題目描述 給定一棵二叉搜尋樹,請找出其中的第k小的結點。例如,5,3,7,2,4,6,8 中,按結點數值大小順序第三小結點的值為4。思路 二叉搜尋樹按照中序遍歷的順序列印出來正好就是排序好的順序。方法一 設定乙個陣列,然後中序遍歷二叉樹,將節點依次加入到陣列中 struct treenode cla...