LeetCode Java刷题笔记— 230. 二叉搜索树中第K小的元素
Posted 刘Java
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode Java刷题笔记— 230. 二叉搜索树中第K小的元素相关的知识,希望对你有一定的参考价值。
给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。
中等难度,这道题和剑指 Offer 54. 二叉搜索树的第k大节点非常的相似,解法也是一样的套路,我们使用中序遍历,然后遍历一次进行k自减1,当k为0时对应的元素就是第k小的节点。
迭代法:
public int kthSmallest(TreeNode root, int k)
if (root == null)
return 0;
LinkedList<TreeNode> queue = new LinkedList<>();
//中序遍历
while (!queue.isEmpty() || root != null)
while (root != null)
queue.addFirst(root);
root = root.left;
root = queue.removeFirst();
//如果k为0,则此时节点就是第k小的节点
if (--k == 0)
return root.val;
root = root.right;
return 0;
递归法:
int k, res;
public int kthSmallest(TreeNode root, int k)
this.k = k;
dfs(root);
return res;
void dfs(TreeNode node)
if (node == null)
return;
dfs(node.left);
--k;
if (k < 0)
return;
if (k == 0)
res = node.val;
return;
dfs(node.right);
以上是关于LeetCode Java刷题笔记— 230. 二叉搜索树中第K小的元素的主要内容,如果未能解决你的问题,请参考以下文章