二叉搜索树中的第 k 个最小元素 - 输入:根 = [5,3,6,2,4,null,null,1],k = 3 输出: 33 提示
最编程
2024-09-30 08:10:47
...
- 树中的节点数为
n
。 1 <= k <= n <= 104
0 <= Node.val <= 104
/** * Definition for a binary tree node. * function TreeNode(val, left, right) { * this.val = (val===undefined ? 0 : val) * this.left = (left===undefined ? null : left) * this.right = (right===undefined ? null : right) * } */ /** * @param {TreeNode} root * @param {number} k * @return {number} */ var kthSmallest = function(root, k) { const stack = []; while (root != null || stack.length) { while (root != null) { stack.push(root); root = root.left; } root = stack.pop(); --k; if (k === 0) { break; } root = root.right; } return root.val; };
二叉搜索树的特点:一种特殊的二叉树,其中任何节点的 左子树上所有节点的值都 小于该节点的值,而 右子树上所有节点的值都 大于该节点的值
二叉树的 前/中/后序遍历,都是相对于 遍历根节点讲的:
前序遍历: 根节点,左子树,右子树
中序遍历:左子树, 根节点,右子树
后序遍历:左子树,右子树, 根节点
因为二叉搜索树和中序遍历的性质,所以二叉搜索树的中序遍历是按照键增加的顺序进行的。于是,我们可以通过中序遍历找到第 k 个最小元素。