-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsymmetric_k_ary_tree.py
More file actions
46 lines (34 loc) · 1006 Bytes
/
Copy pathsymmetric_k_ary_tree.py
File metadata and controls
46 lines (34 loc) · 1006 Bytes
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
"""
A tree is symmetric if its data and shape remain unchanged when it is reflected about the root node.
"""
class TreeNode:
def __init__(self, data):
self.data = data
self.children = []
def __repr__(self):
return '{} -> {}'.format(self.data, self.children)
def update_levels_dict(node: TreeNode, levels, level_num):
if level_num not in levels:
levels[level_num] = list()
levels[level_num].append(node.data)
for child in node.children:
update_levels_dict(child, levels, level_num + 1)
def is_symmetric(node):
levels = dict()
update_levels_dict(node, levels, 0)
for level in levels:
arr = levels[level]
if arr != arr[::-1]:
return False
return True
if __name__ == '__main__':
a = TreeNode(4)
b = TreeNode(3)
c = TreeNode(9)
d = TreeNode(5)
e = TreeNode(3)
f = TreeNode(9)
b.children = [c]
e.children = [f]
a.children = [b, d, e]
print(is_symmetric(a))