LeetCode 题目:
给定一个二叉搜索树的根节点 root
,和一个整数 k
,请你设计一个算法查找其中第 k
个最小元素(从 1 开始计数)。
输入: root = [3,1,4,null,2], k = 1
输出: 1
k
减一,如果减到 0
也就意味着当前访问的节点就是遍历完之后的第 k
小的数据,也就可以直接返回。k
值的携带,不能直接用参数去携带,因为 java 只有值传递,需要将其设置为全局变量。class Solution {
private Integer number;
public int kthSmallest(TreeNode root, int k) {
number = k;
return dfs(root);
}
private int dfs(TreeNode root) {
if(root == null) return -1;
int left = dfs(root.left);
if(left != -1) return left;
number--;
if(number == 0) return root.val;
return dfs(root.right);
}
}
二插搜索树的性质应用。