[트리] Kth Smallest Element in a BST(귀속)

1781 단어
제목:
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, 루트 노드가 두 번째 요소인 경우
leftSize >=k, 그러면 K의 첫 번째 요소는 왼쪽 트리에 있습니다.
leftSize+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); } }

좋은 웹페이지 즐겨찾기