我目前使用下面的代碼來執行BST的inorder遍歷。我的問題是,一旦達到第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;
}
*/
在達到第k個最小值之後如何停止任何想法?目前該功能貫穿整個BST。
這是程序代碼。爲什麼它被標記爲OOP? –