230.二叉搜索树中第K小的元素

40 阅读1分钟

题目:
给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k ****个最小元素(从 1 开始计数)。
算法:
中序遍历

func kthSmallest(root *TreeNode, k int) int {
	ans := -1
	num := 0
	var dfs func(node *TreeNode) 
	dfs = func(node *TreeNode) {
		if node == nil {
			return
		}
		dfs(node.Left)
		if num == k {
			return
		}
		num ++
		if num == k {
			ans = node.Val
			return
		}
		dfs(node.Right)
	}
	dfs(root)
	return ans
}