Skip to content

Commit de05120

Browse files
parameswaran-natarajanOmkarPathak
authored andcommitted
Create ListViewUsingTree.py (#7)
Add an n-ary tree to construct list view
1 parent eb580e0 commit de05120

File tree

1 file changed

+67
-0
lines changed

1 file changed

+67
-0
lines changed

Trees/ListViewUsingTree.py

+67
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# Author: Parameswaran
2+
3+
# sample object
4+
class Sample:
5+
def __init__(self, data_description, node_id, parent_id=""):
6+
self.data_description = data_description
7+
self.node_id = node_id
8+
self.parent_id = parent_id
9+
10+
11+
# Node structure (Basically N-ary Tree)
12+
class Node:
13+
def __init__(self, data):
14+
self.data = Sample(data['data_description'], data['node_id'], data['parent_id'])
15+
self.children = []
16+
17+
18+
class Tree:
19+
def __init__(self, data):
20+
self.Root = data
21+
22+
def insert_child(self, root, new_node):
23+
24+
# if the list item's parent_id is equal to the current node it will append the node in their child array.
25+
26+
if root.data.node_id == new_node.data.parent_id:
27+
root.children.append(new_node)
28+
29+
# else it will check all the node and their children list whether the parent_id is same.
30+
31+
elif len(root.children) > 0:
32+
for each_child in root.children:
33+
# it will create a recursive call for all nodes to treate as a root and search for all its child_list nodes
34+
self.insert_child(each_child, new_node)
35+
36+
def print_tree(self, root, point):
37+
print(point, root.data.node_id, root.data.parent_id, root.data.data_description)
38+
if len(root.children) > 0:
39+
point += "_"
40+
for each_child in root.children:
41+
self.print_tree(each_child, point)
42+
43+
44+
data = {'data_description': 'Sample_root_1', 'node_id': '1', 'parent_id': ''}
45+
data1 = {'data_description': 'Sample_root_2', 'node_id': '2', 'parent_id': '1'}
46+
data2 = {'data_description': 'Sample_root_3', 'node_id': '3', 'parent_id': '1'}
47+
data3 = {'data_description': 'Sample_root_4', 'node_id': '4', 'parent_id': '2'}
48+
data4 = {'data_description': 'Sample_root_5', 'node_id': '5', 'parent_id': '3'}
49+
data5 = {'data_description': 'Sample_root_6', 'node_id': '6', 'parent_id': '4'}
50+
data6 = {'data_description': 'Sample_root_7', 'node_id': '7', 'parent_id': '4'}
51+
52+
a = Tree(Node(data))
53+
a.insert_child(a.Root, Node(data1))
54+
a.insert_child(a.Root, Node(data2))
55+
a.insert_child(a.Root, Node(data3))
56+
a.insert_child(a.Root, Node(data4))
57+
a.insert_child(a.Root, Node(data5))
58+
a.insert_child(a.Root, Node(data6))
59+
a.print_tree(a.Root, "|_")
60+
61+
# |_ 1 Sample_root_1
62+
# |__ 2 1 Sample_root_2
63+
# |___ 4 2 Sample_root_4
64+
# |____ 6 4 Sample_root_6
65+
# |____ 7 4 Sample_root_7
66+
# |__ 3 1 Sample_root_3
67+
# |___ 5 3 Sample_root_5

0 commit comments

Comments
 (0)