Binääripuusta poistetaan joka askeleella jokin lehti, kunnes puu on tyhjä. Monellako tavalla poistot voi toteuttaa?
Tarkastellaan esimerkkinä tehtäväpohjassa olevaa puuta:
Voit olettaa, että puussa on korkeintaan 100 solmua ja että vastaus on aina korkeintaan 10^{18}.
Python
Toteuta tiedostoon cleartree.py funktio count(root), joka antaa poistotapojen määrän.
from collections import namedtuple
def count(node):
# TODO
if __name__ == "__main__":
Node = namedtuple("Node",["left","right"])
tree = Node(Node(None,None),Node(Node(None,None),Node(None,None)))
print(count(tree)) # 8
Java
Toteuta tiedostoon ClearTree.java metodi count, joka antaa poistotapojen määrän.
public class ClearTree {
public long count(Node node) {
// TODO
}
public static void main(String[] args) {
ClearTree c = new ClearTree();
Node tree = new Node(new Node(null,null),
new Node(new Node(null,null),
new Node(null,null)));
System.out.println(c.count(tree)); // 8
}
}
