题解 | #第k轻的牛牛#
第k轻的牛牛
https://www.nowcoder.com/practice/d3b31f055b1640d9b10de0a6f2b8e6f3
知识点:二叉搜索树,中序遍历
二叉搜索树的性质是当前节点的左子树节点值均小于当前节点值,右子树节点值均大于当前节点值,而中序遍历刚好是所有节点顺序排列的结果。
要想获得第k小的节点值,我们只需要利用中序遍历,遍历到达第k个节点时,将其节点值保存下来返回即可。
Java题解如下
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 root TreeNode类 * @param k int整型 * @return int整型 */ private int val = 0; private int k; private int count = 0; public int kthLighest (TreeNode root, int k) { // write code here this.k = k; inOrder(root); return val; } private void inOrder(TreeNode node) { if(node == null) { return; } inOrder(node.left); count++; if(count == k) { val = node.val; return; } inOrder(node.right); } }