CSES - Lapset

Tehtäväsi on muodostaa lista, joka sisältää puun solmujen lasten määrät pienimmästä suurimpaan.

Esimerkiksi alla olevassa puussa listan haluttu sisältö on [0, 0, 0, 0, 1, 2, 3]. Puussa on neljä lehteä, joilla ei ole lapsia. Solmulla 2 on yksi lapsi, solmulla 4 on kaksi lasta ja solmulla 1 on kolme lasta.

Toteuta tiedostoon children.py funktio count_children, jolle annetaan parametrina viittaus puun juurisolmuun. Funktio palauttaa listana solmujen lasten määrät.

class Node:
    def __init__(self, value, children=None):
        self.value = value
        self.children = children if children else []

    def __repr__(self):
        if self.children == []:
            return f"Node({self.value})"
        else:
            return f"Node({self.value}, {self.children})"

def count_children(node):
    # TODO

if __name__ == "__main__":
    tree1 = Node(1, [Node(4, [Node(3), Node(7)]),
                     Node(5),
                     Node(2, [Node(6)])])
    print(count_children(tree1)) # [0, 0, 0, 0, 1, 2, 3]

    tree2 = Node(1, [Node(2, [Node(3, [Node(4)])])])
    print(count_children(tree2)) # [0, 1, 1, 1]

    tree3 = Node(1, [Node(2), Node(3), Node(4)])
    print(count_children(tree3)) # [0, 0, 0, 3]