二叉搜尋樹:根結點的值大於左子樹中任一結點的值,小於右子樹中任一結點的值。
答案:二叉搜尋樹按照中序遍歷得到的結果就是遞增的序列,所以要找第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...