From e38866b923f273eb263e1bdc3782f4a04791682d Mon Sep 17 00:00:00 2001 From: megacz Date: Fri, 30 Jan 2004 07:42:42 +0000 Subject: [PATCH] 2003/12/10 01:41:17 darcs-hash:20040130074242-2ba56-5a131fd719d778fa0f7e85f1d032d27a5dae46ce.gz --- src/org/xwt/util/BalancedTree.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/org/xwt/util/BalancedTree.java b/src/org/xwt/util/BalancedTree.java index e442db3..0f8b62e 100644 --- a/src/org/xwt/util/BalancedTree.java +++ b/src/org/xwt/util/BalancedTree.java @@ -66,7 +66,7 @@ public class BalancedTree { if (parent == 0) return size(left[slot]); // we are on the far left edge // all nodes after parent and before us are in our left subtree - return size(left[slot]) + indexNode(objects[parent]) + 1; + return size(left[slot]) + (parent <= 0 ? 0 : indexNode(objects[parent])) + 1; } /** returns the object at index; runs in O(log n) time unless cache hit */ @@ -310,7 +310,7 @@ public class BalancedTree { } else { int left_childs_rightmost = delete(size(left[slot]) - 1, left[slot], slot); left[left_childs_rightmost] = left[slot]; - left[left_childs_rightmost] = right[slot]; + right[left_childs_rightmost] = right[slot]; if (parent == 0) root = left_childs_rightmost; else (left[parent] == slot ? left : right)[parent] = left_childs_rightmost; // fix parent's pointer balance(left_childs_rightmost, parent); -- 1.7.10.4