# Python II - Uni Saarland


class Tree:
    def __init__(self, label, children):
        self.label = label
        self.children = children

    def __repr__(self):
        return "Tree({!r}, {!r})".format(self.label, self.children)
    def __str__(self):
        if self.children:    
            return '({} {})'.format(self.label, ' '.join(map(str, self.children)))
        else:
            return self.label

    def __eq__(self, other):
        return self.label == other.label and self.children == other.children

if __name__ == '__main__':
    sub1 = Tree('sub1', [Tree('leaf1',[]), Tree('leaf2', [])])
    sub2 = Tree('sub2', [Tree('leaf3',[]), Tree('leaf4', [])])
    tree = Tree('root', [sub1, sub2])

    if Tree('root', [Tree('leaf', [])]) == Tree('root', [Tree('leaf', [])]):
        print("Trees are equal")
    else:
        print("ERROR: Trees should be equal!")
