python logo

python tree


Python hosting: Host, run, and code Python in the cloud!

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.

Related Course:

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"

 

BackNext





Leave a Reply:




Miguel Fri, 11 Mar 2016

Hello

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

Thanks!

Frank Sat, 12 Mar 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)
print(root.child[0].data[0])