树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