首页 > 其他 > 详细

二叉搜索树中第K小的元素

时间:2021-01-26 00:44:51      阅读:19      评论:0      收藏:0      [点我收藏+]

二叉搜索树中第K小的元素

【迭代】

k总是有效的,当k===元素个数时,再最后一次res.push(root.val);后,就不再进入while循环了,因此有两个出口。

/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
*     this.val = (val===undefined ? 0 : val)
*     this.left = (left===undefined ? null : left)
*     this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} root
* @param {number} k
* @return {number}
*/
var kthSmallest = function(root, k) {
   let res = [];
   let stack = [];
   if(!root)
       return [];
   while(root !== null || stack.length > 0){
       if(res.length === k) break;
       while(root !== null){
           stack.push(root);
           root = root.left;
      }
       root = stack.pop();
       res.push(root.val);
       root = root.right
  }
   return res.pop();
};

【递归】

就把顺序全部求出来后,再取下标为k-1的元素返回。

var kthSmallest = function(root, k) {
   const res = [];
   const inOrderTraversalNode = (node) => {
       if(node.left)
           inOrderTraversalNode(node.left);
       res.push(node.val);
       if(node.right)
           inOrderTraversalNode(node.right);
  }
  inOrderTraversalNode(root);
  return res[k-1];
};

 

二叉搜索树中第K小的元素

原文:https://www.cnblogs.com/peekapoooo/p/14327998.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!