给定一个二叉搜索树的根节点 root ,和一个整数 k
请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。
输入:root = [5,3,6,2,4,null,null,1], k = 3
输出:3
题解:
利用先序遍历,先将左孩子压入栈,到最左叶子节点的时候,出栈,先判断 计数君 == k?,如果相等了,输出弹出节点的值,否则 计数君 再计数,然后访问弹出节点的右孩子。
class Solution:
def kthSmallest(self, root: TreeNode, k: int) -> int:
count = 1
visited = [root]
while visited:
if root.left:
root = root.left
visited.append(root)
else:
node = visited.pop()
store = (node.val)
if count==k:
return store
count+=1
if node.right:
root = node.right
visited.append(root)
性能: