Skip to main content

54 二叉搜索树的第k个节点

牛客

描述

给定一棵结点数为n 二叉搜索树,请找出其中的第 k 小的TreeNode结点值。

  1. 返回第k小的节点值即可
  2. 不能查找的情况,如二叉树为空,则返回-1,或者k大于n等等,也返回-1
  3. 保证n个节点的值不一样
import java.util.*;

/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* public TreeNode(int val) {
* this.val = val;
* }
* }
*/

public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param proot TreeNode类
* @param k int整型
* @return int整型
*/
public int KthNode (TreeNode proot, int k) {
if(proot==null || k<=0) return -1;
kk=k;
ret=null;
kThNode(proot);
if(ret==null) return -1;
return ret;
}

int kk;
Integer ret;
private void kThNode(TreeNode proot){
if(ret!=null) return;
if(proot.left!=null){
kThNode(proot.left);
}
kk--;
if(kk==0) ret=proot.val;
if(ret!=null) return;
if(proot.right!=null) kThNode(proot.right);
}
}