class Node: def __init__(self, name, parent=None): self.name = name self.parent = parent self.children = [] if parent: self.parent.children.append(self) def __repr__(self): if self.children == []: return self.name return '('+self.name + ' ' + ' '.join(repr(c) for c in self.children)+')' Write a complete python file that will print the tree (1 (2 (3 4 5 6) (7 8)) (9 10 (11 12))) Call the root of the tree 'root'. Then print out str(root).
class Node: def __init__(self, name, parent=None): self.name = name self.parent = parent self.children = [] if parent: self.parent.children.append(self) def __repr__(self): if self.children == []: return self.name return '('+self.name + ' ' + ' '.join(repr(c) for c in self.children)+')' Write a complete python file that will print the tree (1 (2 (3 4 5 6) (7 8)) (9 10 (11 12))) Call the root of the tree 'root'. Then print out str(root).
Here is the complete Python file that constructs the tree and prints it as specified:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | class Node: def __init__(self, name, parent=None): self.name = name self.parent = parent self.children = [] if parent: self.parent.children.append(self) def __repr__(self): if not self.children: return self.name return '(' + self.name + ' ' + ' '.join(repr(c) for c in self.children) + ')' # Construct the tree root = Node('1') node2 = Node('2', root) node3 = Node('3', node2) node4 = Node('4', node2) node5 = Node('5', node2) node6 = Node('6', node2) node7 = Node('7', node2) node8 = Node('8', node7) node9 = Node('9', root) node10 = Node('10', node9) node11 = Node('11', node10) node12 = Node('12', node10) # Print the tree print(str(root)) |
1 | (1 (2 (3 4 5 6) (7 8)) (9 10 (11 12))) |
I extracted the following code from that output:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | class Node: def __init__(self, name, parent=None): self.name = name self.parent = parent self.children = [] if parent: self.parent.children.append(self) def __repr__(self): if not self.children: return self.name return '(' + self.name + ' ' + ' '.join(repr(c) for c in self.children) + ')' # Construct the tree root = Node('1') node2 = Node('2', root) node3 = Node('3', node2) node4 = Node('4', node2) node5 = Node('5', node2) node6 = Node('6', node2) node7 = Node('7', node2) node8 = Node('8', node7) node9 = Node('9', root) node10 = Node('10', node9) node11 = Node('11', node10) node12 = Node('12', node10) # Print the tree print(str(root)) |
Running the following program:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | class Node: def __init__(self, name, parent=None): self.name = name self.parent = parent self.children = [] if parent: self.parent.children.append(self) def __repr__(self): if not self.children: return self.name return '(' + self.name + ' ' + ' '.join(repr(c) for c in self.children) + ')' # Construct the tree root = Node('1') node2 = Node('2', root) node3 = Node('3', node2) node4 = Node('4', node2) node5 = Node('5', node2) node6 = Node('6', node2) node7 = Node('7', node2) node8 = Node('8', node7) node9 = Node('9', root) node10 = Node('10', node9) node11 = Node('11', node10) node12 = Node('12', node10) # Print the tree print(str(root)) |
(1 (2 3 4 5 6 (7 8)) (9 (10 11 12)))
Testing if the previous output contains the string (1 (2 (3 4 5 6) (7 8)) (9 10 (11 12)))
: False