因此,我正在實施一個BST,現在我正試圖從一個已排序的數組中添加項目。如何添加一個二進制搜索樹的元素排序(在C#中)
我有一個遞歸函數Dup的:
private BNode Dup(T[] arr, int start, int end) {
if (start > end) return null;
BNode sub_root = new BNode(arr[(int)Math.Ceiling((double)((start + end)/2))]);
sub_root.Left = Dup(arr, start, (start + end)/2 - 1);
sub_root.Right = Dup(arr, (start + end)/2 + 1, end);
return sub_root;
}
但是,如果我通過它在陣列中,看起來像[1,1],它增加了1在陣列的0的位置,然後添加犯規在左子樹的位置0處的1(因爲當我們進行遞歸調用時,start = 0,end = -1),然後將另一個1放到右子樹中(這是錯誤的!)。
這是我所看到的是不工作的唯一情況..
任何想法如何解決呢? (我認爲這很可能是一個數學錯誤)
謝謝!
是不是'arr'排序的先決條件? '[1,0]'不是。 –
沒錯。它不是...我會更新我的上面的例子。我有1.0使它更清楚(比1,1)... – Toadums
間隔是否包容或獨佔?像[開始,結束]或[開始,結束]? – Tudor