# contributed by Jean Privat
class TreeNode
- attr _left: TreeNode
- attr _right: TreeNode
- attr _item: Int
+ var left: nullable TreeNode
+ var right: nullable TreeNode
+ var item: Int
- init(left: TreeNode, right: TreeNode, item: Int)
+ init(left: nullable TreeNode, right: nullable TreeNode, item: Int)
do
_left = left
_right = right
end
- meth item_check: Int
+ fun item_check: Int
do
if _left == null then
return _item
end
end
-meth bottom_up_tree(item: Int, depth: Int): TreeNode
+fun bottom_up_tree(item: Int, depth: Int): TreeNode
do
if depth > 0 then
var item_item = 2 * item
end
var stretch_depth = max_depth + 1
-var stretch_tree = bottom_up_tree(0, stretch_depth)
+var stretch_tree: nullable TreeNode = bottom_up_tree(0, stretch_depth)
print("stretch tree of depth {stretch_depth}\t check: {stretch_tree.item_check}")
var depth = min_depth
while depth <= max_depth do
- var iterations = 1.lshift(max_depth - depth + min_depth)
+ var iterations = 1 << (max_depth - depth + min_depth)
var check_res = 0
for i in [1..(iterations+1)[ do