현재 BST의 inorder 순회 수행을 위해 follow 코드를 사용하고 있습니다. 내 문제는 K 번째로 작은 값에 도달하면 모든 계산을 중지합니다.재사용이 어려울 때 BST에서 k 번째로 작은 문자 인쇄
http://codepad.viper-7.com/XMGcxz
내 문제는 다음과 같은 기능
public function _kthSmallest($node, $k){
if($node->left != NULL){
$this->_kthSmallest($node->left, $k);
}
echo $node->data . ' ';
self::$counter++;
echo self::$counter . "<br/>";
/*
if(self::$counter >= $k){
return $node->data;
}
*/
if($node->right != NULL){
$this->_kthSmallest($node->right, $k);
}
}
내가 루트 노드는 항상 인쇄됩니다 때문에이 문제에 실행이 코드의 주석을 해제하는 경우로한다.
/*
if(self::$counter >= $k){
return $node->data;
}
*/
kth가 가장 작 으면 어떻게 멈출 수 있습니까? 현재이 기능은 전체 BST를 통해 계속됩니다.
이것은 절차상의 코드입니다. 왜 그것이 OOP로 태그 되었습니까? –