Skip to content

Commit 92c52ea

Browse files
committed
rename fields in IntervalPomNode
1 parent 387be02 commit 92c52ea

3 files changed

Lines changed: 24 additions & 23 deletions

File tree

src/chapter14/problem14_1.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ def _interval_pom_insert_node(T, z):
5454
y.right = z
5555
z.left = z.right = T.nil
5656
z.color = Color.RED
57-
z.sum = z.low - z.high
58-
z.max = z.low
57+
z.overlap = z.low - z.high
58+
z.max_overlap = z.low
5959
z.pom = z.key
6060
x = y
6161
while x is not T.nil:
@@ -65,11 +65,11 @@ def _interval_pom_insert_node(T, z):
6565

6666

6767
def _update_additional_fields(x):
68-
x.sum = x.left.sum + (x.low - x.high) + x.right.sum
69-
x.max = max(x.left.max, x.left.sum + x.low, x.left.sum + (x.low - x.high) + x.right.max)
70-
if x.max == x.left.max:
68+
x.overlap = x.left.overlap + (x.low - x.high) + x.right.overlap
69+
x.max_overlap = max(x.left.max_overlap, x.left.overlap + x.low, x.left.overlap + (x.low - x.high) + x.right.max_overlap)
70+
if x.max_overlap == x.left.max_overlap:
7171
x.pom = x.left.pom
72-
elif x.max == x.left.sum + x.low:
72+
elif x.max_overlap == x.left.overlap + x.low:
7373
x.pom = x.key
7474
else:
7575
x.pom = x.right.pom
@@ -239,8 +239,8 @@ def _copy_all_fields(z, y):
239239
y.data = z.data
240240
y.low = z.low
241241
y.high = z.high
242-
y.sum = z.sum
243-
y.max = z.max
242+
y.overlap = z.overlap
243+
y.max_overlap = z.max_overlap
244244
y.pom = z.pom
245245
y.color = z.color
246246
y.left = z.left

src/datastructures/red_black_tree.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,6 @@ def __init__(self, key):
9090
super().__init__(key)
9191
self.low = 0
9292
self.high = 0
93-
self.sum = 0
94-
self.max = -math.inf
93+
self.overlap = 0
94+
self.max_overlap = -math.inf
9595
self.pom = None

test/tree_util.py

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ def get_binary_search_subtree_inorder_keys(subtree_root, sentinel):
1919
if subtree_root is sentinel:
2020
return Array()
2121
return get_binary_search_subtree_inorder_keys(subtree_root.left, sentinel) \
22-
+ Array.of(subtree_root.key) \
23-
+ get_binary_search_subtree_inorder_keys(subtree_root.right, sentinel)
22+
+ Array.of(subtree_root.key) \
23+
+ get_binary_search_subtree_inorder_keys(subtree_root.right, sentinel)
2424

2525

2626
def get_binary_search_tree_inorder_nodes(tree):
@@ -31,8 +31,8 @@ def get_binary_search_subtree_inorder_nodes(subtree_root, sentinel):
3131
if subtree_root is sentinel:
3232
return Array()
3333
return get_binary_search_subtree_inorder_nodes(subtree_root.left, sentinel) \
34-
+ Array.of(subtree_root) \
35-
+ get_binary_search_subtree_inorder_nodes(subtree_root.right, sentinel)
34+
+ Array.of(subtree_root) \
35+
+ get_binary_search_subtree_inorder_nodes(subtree_root.right, sentinel)
3636

3737

3838
def get_random_binary_search_tree(min_size=1, max_size=20, max_value=999, node_ctor=bt.Node):
@@ -364,16 +364,17 @@ def assert_interval_pom_tree(tree):
364364

365365

366366
def assert_interval_pom_subtree(subtree_root, sentinel):
367-
assert_that(subtree_root.sum,
368-
is_(equal_to(subtree_root.left.sum + (subtree_root.low - subtree_root.high) + subtree_root.right.sum)))
369-
assert_that(subtree_root.max, is_(equal_to(max(subtree_root.left.max,
370-
subtree_root.left.sum + subtree_root.low,
371-
subtree_root.left.sum +
372-
(subtree_root.low - subtree_root.high) +
373-
subtree_root.right.max))))
374-
if subtree_root.max == subtree_root.left.max:
367+
assert_that(subtree_root.overlap,
368+
is_(equal_to(
369+
subtree_root.left.overlap + (subtree_root.low - subtree_root.high) + subtree_root.right.overlap)))
370+
assert_that(subtree_root.max_overlap, is_(equal_to(max(subtree_root.left.max_overlap,
371+
subtree_root.left.overlap + subtree_root.low,
372+
subtree_root.left.overlap +
373+
(subtree_root.low - subtree_root.high) +
374+
subtree_root.right.max_overlap))))
375+
if subtree_root.max_overlap == subtree_root.left.max_overlap:
375376
assert_that(subtree_root.pom, is_(equal_to(subtree_root.left.pom)))
376-
elif subtree_root.max == subtree_root.left.sum + subtree_root.low:
377+
elif subtree_root.max_overlap == subtree_root.left.overlap + subtree_root.low:
377378
assert_that(subtree_root.pom, is_(equal_to(subtree_root.key)))
378379
else:
379380
assert_that(subtree_root.pom, is_(equal_to(subtree_root.right.pom)))

0 commit comments

Comments
 (0)