题目描述:
给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。
说明:
你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。
示例 1:
输入: root = [3,1,4,null,2], k = 13/ \1 4\2输出: 1
示例 2:
输入: root = [5,3,6,2,4,null,null,1], k = 35/ \3 6/ \2 4/1输出: 3
进阶:
如果二叉搜索树经常被修改(插入/删除操作)并且你需要频繁地查找第 k 小的值,你将如何优化 kthSmallest 函数?
算法实现:
/*** Definition for a binary tree node.* function TreeNode(val) {* this.val = val;* this.left = this.right = null;* }*//*** @param {TreeNode} root* @param {number} k* @return {number}*/var kthSmallest = function(root, k) {let tmp = []dft(root)var dft = tree => {if (!tree) {return null}dft(tree.left)tmp.push(tree.val)dft(tree.right)}return tmp[k - 1]};
思考:
二叉树的中序遍历有遍历出的数组排列从小到大的特点,利用该特点解决该题。
总结:
对二叉树操作的算法实现还不是很熟悉,需要了解一下。
