树Kth Smallest Element in a BST(递归)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了树Kth Smallest Element in a BST(递归)相关的知识,希望对你有一定的参考价值。

题目:

Given a binary search tree, write a function kthSmallest to find the kth smallest element in it.

Note: 
You may assume k is always valid, 1 ≤ k ≤ BST‘s total elements.

思路:

1、计算左子树元素个数leftSize。

2、 leftSize+1 = K,则根节点即为第K个元素

     leftSize >=k, 则第K个元素在左子树中,

     leftSize +1 <k, 则转换为在右子树中,寻找第K-left-1元素。

/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} root
 * @param {number} k
 * @return {number}
 */
var kthSmallest = function(root, k) {
    if(root==null){
        return 0;
    }
    var leftSize=nodeNum(root.left);
    
    if(k==leftSize+1){
        return root.val;
    }else if(k<leftSize+1){
        return kthSmallest(root.left,k);
    }else{
        return kthSmallest(root.right,k-leftSize-1);
    }
};

function nodeNum(root){
    if(root==null){
        return 0;
    }else{
        return 1+nodeNum(root.left)+nodeNum(root.right);
    }
}

 

以上是关于树Kth Smallest Element in a BST(递归)的主要内容,如果未能解决你的问题,请参考以下文章

leetcode 之 Kth Smallest Element in a BST

230. Kth Smallest Element in a BST

算法: 搜索二叉树搜索第k个最小数230. Kth Smallest Element in a BST

LeetCode-230. Kth Smallest Element in a BST

230. Kth Smallest Element in a BST

LeetCode 230. Kth Smallest Element in a BST(非递归中序遍历二叉树)