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

2021-10-10 13:47:07 字數 727 閱讀 2614

二叉搜尋樹的前序遍歷剛好是節點值從小到大的排序。所以先使用前序遍歷,然後輸出第k個節點。

前序遍歷的過程為:

維護乙個棧和乙個陣列乙個指向節點的指標

class

solution

:# 返回對應節點treenode

defkthnode

(self, proot, k)

:# write code here

root = proot

if k ==0:

return

none

stack =

res =

while

(root!=

none

orlen

(stack)!=0

):while

(root)

: root = root.left

if(len

(stack)!=0

):t = stack.pop(-1

) root = t.right

return res[k-1]

if k<=

len(res)

else

none

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

給定一棵二叉搜尋樹,請找出其中的第k小的結點。例如,5,3,7,2,4,6,8 中,按結點數值大小順序第三小結點的值為4。思路 coding utf 8 class treenode def init self,x self.val x self.left none self.right none ...

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

package project 題目 二叉搜尋樹的第k個結點。給定一棵二叉搜尋樹,請找出其中的第k小的結點。例如 5,3,7,2,4,6,8 中,按結點數值大小順序第三小結點的值為4。author hexiaoli 思路 劍指offer 二叉搜尋樹 左子結點的值 根結點的值 右子結點的值。二叉搜尋樹...

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

給定一棵二叉搜尋樹,請找出其中的第k小的treenode結點。思路1 最直接的,我們知道將一棵二叉搜尋樹進行中序遍歷,得到的結果就是公升序排列的,這樣就能輕鬆找到了。實現 class solution treenode kthnode treenode proot,int k 仔細想想上面的實現,不...