劍指offer--面試題63:二叉搜尋樹的第k個結點
阿新 • • 發佈:2019-01-22
題目描述
給定一顆二叉搜尋樹,請找出其中的第k小的結點。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按結點數值大小順序第三個結點的值為4。
python實現:
# -*- coding:utf-8 -*- # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: # 返回對應節點TreeNode #法2:如果需要KthNode()的呼叫很頻繁,則參考:https://leetcode.com/problems/kth-smallest-element-in-a-bst/ result = None cnt = 0 def KthNode(self, pRoot, k): # write code here if k<=0 or pRoot is None: return None self.cnt = k self.inOrder(pRoot) return self.result def inOrder(self, root): if self.result is not None: return if root: self.inOrder(root.left) self.cnt -= 1 #print root.val, self.cnt if self.cnt==0: #self.result = root.val self.result = root return self.inOrder(root.right)