Implementation of generic tree in Python
Implementation of generic tree in Python
import random
import string
import pptree
class TreeNode(object):
"Node of a Tree"
self.name = name
self.parent=parent
self.children = []
self.add_child(child)
def __repr__(self):
return self.name
def is_root(self):
if self.parent is None:
return True
else:
return False
def is_leaf():
if len(self.children) == 0:
return True
else:
return False
if self.is_root():
return 0
else:
return 1 + self.parent.depth()
node.parent=self
self.children.append(node)
def disp(self):
pptree.print_tree(self,'children','name')
class Tree:
"""
"""
def __init__(self):
self.root=None
self.height=0
self.nodes=[]
def insert(self,node,parent): # Insert a node into tree
parent.add_child(node)
else:
if self.root is None:
self.root=node
self.nodes.append(node)
index=-1
for N in self.nodes:
index+=1
if N.name == data:
break
if index == len(self.nodes)-1:
else:
return index
def getNode(self,id):
return self.nodes[id]
def root():
return self.root
#----------------------------------------------------------------------
class BinaryTreeNode(Tree):
def __init__(self, name='root', children=None,parent=None):
pass
#----------------------------------------------------------------------
##def getNodeRandom(node,level):
## if level==1:
## return node
## else:
## if(len(node.children) >0):
##
newnode=getNodeRandom(node.children[random.randint(0,len(node.children)-
1)],level-1)
## return newnode
## else:
## return node
##
## depth=0
##
##
## tmax=random.randint(2,5)
## if node2 is None:
## break
##
## for i in range(tmax):
##
node2.add_child(TreeNode((random.choice(string.ascii_letters)+str(i)).upper()))
##
## steps=steps-1
##
root=TreeNode('root')
tree=Tree()
tree.insert(root,None)
for i in range(steps):
tree.insert(TreeNode(random.choice(string.ascii_letters)+str(i)),tree.nodes[random.ran
dint(0,len(tree.nodes)-1)])
return tree
newtree=TreeBuilder2(50)
newtree.root.disp()
##root=TreeBuilder(10)
##root.disp()