zoukankan      html  css  js  c++  java
  • 【树】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);
        }
    }
  • 相关阅读:
    UML-如何画操作契约?
    UML-操作契约是什么?
    UML-SSD总结
    UML-如何画SSD?
    UML-SSD-为什么要画SSD?
    UML-SSD-定义
    系统幂等性设计
    UML-领域模型-例子与总结
    UML-领域模型-属性
    UML-领域模型-添加关联和属性
  • 原文地址:https://www.cnblogs.com/shytong/p/5169013.html
Copyright © 2011-2022 走看看