【leetcode】230. Kth Smallest Element in a BST
题目如下:
解题思路:本题对运行时间的要求比较低,我试过把遍历所有节点并且把节点的值存入数组,最后排序并取第K-1位的元素作为结果返回也能通过。我的方法是省去了最后排序的步骤,因为BST的规律就是 node.left.val < node.val < node.right.val,所以只要按照中序遍历的方式遍历树即可。
代码如下:
# Definition for a binary tree node. class TreeNode(object): def __init__(self, x): self.val = x self.left = None self.right = None class Solution(object): res = [] def traverse(self,node): if node.left != None: self.traverse(node.left) self.res.append(node.val) if node.right != None: self.traverse(node.right) def kthSmallest(self, root, k): """ :type root: TreeNode :type k: int :rtype: int """ self.res = [] self.traverse(root) return self.res[k-1]