题目
July 7, 2021 · View on GitHub
给定一棵二叉搜索树,请找出其中的第 k 小的结点。
你可以假设树和 k 都存在,并且 1≤k≤ 树的总结点数。
样例
输入:root = [2, 1, 3, null, null, null, null] ,k = 3
2
/ \
1 3
输出:3
参考答案
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
private TreeNode ans = new TreeNode(-1);
private int a = 0;//值调用的问题,所以要定义全局变量
public TreeNode kthNode(TreeNode root, int k) {
a = k;
dfs(root);
return ans;
}
public void dfs(TreeNode root){
if(root == null) return;
dfs(root.left);
if(--a == 0) ans = root;
dfs(root.right);
}
}