Python tree


Introduction

In computer science, a tree is a data structure that is modeled after nature.  Unlike trees in nature, the tree data structure is upside down: the root of the tree is on top. A tree consists of nodes and its connections are called edges. The bottom nodes are also named leaf nodes. A tree may not have a cycle.

 

tree
A tree with eight nodes. The root of the tree (5) is on top.

Python does not have built-in support for trees.

Binary tree

A binary tree is a data structure where every node has at most two children (left and right child).   The root of a tree is on top. Every node below has a node above known as the parent node.We define a class thee which has a left and right attribute. From this binary tree we define the root (top of the three) and a left and right node.

#!/usr/bin/env python
class Tree(object):
    def __init__(self):
        self.left = None
        self.right = None
        self.data = None
 
root = Tree()
root.data = "root"
root.left = Tree()
root.left.data = "left"
root.right = Tree()
root.right.data = "right"
 
print(root.left.data)

You could then further create the tree like this:

#!/usr/bin/env python
class Tree(object):
    def __init__(self):
        self.left = None
        self.right = None
        self.data = None
 
root = Tree()
root.data = "root"
root.left = Tree()
root.left.data = "left"
root.right = Tree()
root.right.data = "right"
 
root.left.left = Tree()
root.left.left.data = "left 2"
root.left.right = Tree()
root.left.right.data = "left-right"

 


2 thoughts on “Python tree

  1. Miguel - March 11, 2016

    Hello

    Is there a way to dinamically assign the number of children branches for each parent branch?

    Thanks!

    1. Frank - March 12, 2016

      Hi Miguel!

      Yes, it is possible to assign the number of children using a method, but if a tree has more than two children we can no longer call it binary.
      I created some code:

      #!/usr/bin/env python
      class Tree(object):
          def __init__(self):
              self.left = None
              self.child = []
              self.data = []
       
          def createChildren(self,amount):
      	for i in range(0,amount):
                  self.child.append(Tree())
       
          def setChildrenValues(self,list):
              for i in range(0,len(list)):
                  self.data.append(list[i])
       
      root = Tree()
      root.createChildren(3)
      root.setChildrenValues([5,6,7]) 
       
      root.child[0].createChildren(2)
      root.child[0].setChildrenValues([1,2])
       
      # print some values in the tree
      print(root.data[0])
      print(root.child[0].data[0])