我正在處理一個問題,因爲我困在類上。它涉及到在這裏找到的二進制搜索樹中添加一個方法:http://algs4.cs.princeton.edu/32bst/BST.java.html二進制搜索樹Java中的迭代上限方法
我需要開發一個迭代上限方法,找到給定密鑰的上限。它不能遞歸。
這是我的代碼到目前爲止。我理解我應該實現的算法的基礎知識,但是我發現實際上很難繞過我的頭。
在此先感謝您提供的任何幫助。
public Key ceiling_i(Key key)
{
Node t = root;
for(int i = 0; i < size(); i++){
int cmp = key.compareTo(t.key);
if(cmp == 0) return t.key;
else if(cmp < 0) t = t.left;
else if(cmp > 0) t = t.right;
}
return null;
}
編輯:我遇到的主要問題是如何處理第一個之後的迭代。根據我的書,「如果給定的密鑰大於BST根的密鑰,那麼密鑰的上限(BST中的最大密鑰大於或等於密鑰)必須位於右側子樹中。如果密鑰是 小於根的密鑰,那麼密鑰的上限可以是 位於左子樹中;如果不是(或者如果密鑰等於根中的密鑰 ),那麼根上的密鑰是鑰匙的天花板「。我不知道如何處理在循環中的。
什麼不適用於此解決方案? – Tudor 2012-03-04 23:09:45