[python版]劍指offer -- 二叉搜尋樹的第k大結點
阿新 • • 發佈:2018-12-11
思路
二叉搜尋樹按照中序遍歷的順序打印出來正好就是排序好的順序。 所以,按照中序遍歷的第k個結點就是結果。
注:本題返回的是結點,而不是結點值。
實現程式碼
# -*- coding:utf-8 -*- # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: # 返回對應節點TreeNode def KthNode(self, root, k): # write code here if not root:return None self.res = [] self.DFS(root) return self.res[k-1] if 0<k<=len(self.res) else None # 深度優先+中序遍歷得到整棵樹 def DFS(self, root): if not root: return self.DFS(root.left) self.res.append(root) self.DFS(root.right)