230. Kth Smallest Element in a BST
- 二叉搜索树
- 为空
- 左子树的值均小于根节点
- 右子树的值均大于根节点
- 先序遍历即为从小到大遍历,因此先序遍历的第 k 个元素为 kth Smallest 元素
# 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):
def __init__(self):
self.val = 0
def kthSmallest(self, root, k):
"""
:type root: TreeNode
:type k: int
:rtype: int
"""
def kthInBST(cur, cnt, k):
if cur == None:
return cnt
if cnt == k:
return cnt
cnt = kthInBST(cur.left, cnt, k)
cnt += 1
if cnt == k:
self.val = cur.val
return cnt
cnt = kthInBST(cur.right, cnt, k)
return cnt
kthInBST(root, 0, k)
return self.val