Reminder: Binary Tree Client Code
Reminder: Binary Tree Client Code
with COUNTER_PACKAGE, PILE_PACKAGE, TREE_PACKAGE;
use COUNTER_PACKAGE, PILE_PACKAGE, TREE_PACKAGE;
procedure COUNT_LEAVES_ON_BINARY_TREE is
begin
GET_INITIAL(TREE);
PUT_INITIAL(TREE, ON => PILE);
ZERO(LEAF_COUNT);
while IS_NOT_EMPTY(PILE)
loop
TAKE(TREE, OFF => PILE);
if IS_SINGLE_LEAF(TREE) then
INCREMENT(LEAF_COUNT);
THROW_AWAY(TREE);
else
SPLIT(TREE,
LEFT_INTO => LEFT_SUBTREE,
RIGHT_INTO => RIGHT_SUBTREE);
PUT(LEFT_SUBTREE, ON => PILE);
PUT(RIGHT_SUBTREE, ON = > PILE);
end if;
end loop;
DISPLAY(LEAF_COUNT);
end COUNT_LEAVES_ON_BINARY_TREE;