minte9
LearnRemember




Nodes

A tree is a data structure with nodes that are connected by edges. The starting node of a tree is called a root and the nodes at the end are called leaves. Trees always have exactly one root. In trees child nodes must have one parent and edges that are not loops.
 
root = {'name': 'A', 'children': []}
node2 = {'name': 'B', 'children': []}
node3 = {'name': 'C', 'children': []}
node4 = {'name': 'D', 'children': []}
node5 = {'name': 'E', 'children': []}
node6 = {'name': 'F', 'children': []}
node7 = {'name': 'G', 'children': []}
node8 = {'name': 'H', 'children': []}

root['children'] = [node2, node3]
node2['children'] = [node4]
node3['children'] = [node5, node6]
node5['children'] = [node7, node8]

print(node3['children'])

"""
[{'name': 'E', 'children': 
    [{'name': 'G', 'children': []}, 
     {'name': 'H', 'children': []}]}, 
 {'name': 'F', 'children': []}]
"""

Anytree / Render

Using tree data structures is made easy with anytree package.
 
from anytree import Node, RenderTree

root = Node('A')
node2 = Node('B', parent=root)
node3 = Node('C', parent=root)
node4 = Node('D', parent=node2)
node5 = Node('E', parent=node3)
node6 = Node('F', parent=node3)
node7 = Node('G', parent=node5)
node8 = Node('H', parent=node5)

print("Tree:")
for pre, fill, node in RenderTree(root):
    print(pre, node.name)

# Delete node 'C' and its descendants
node3.parent = None

print("Tree after deletion:")
[print(pre,node.name) for pre,_,node in RenderTree(root)]

"""
    Tree:
    A
    ├──  B
    │   └──  D
    └──  C
        ├──  E
        │   ├──  G
        │   └──  H
        └──  F
    Tree after deletion:
    A
    └──  B
        └──  D
"""



  Last update: 121 days ago