

Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Some concept of Data Structures are Abstract, Balance Factor, Complete Binary Tree, Dynamically, Storage, Implementation, Sequential Search, Advanced Data Structures, Graph Coloring Two, Insertion Sort. Main points of this lecture are: Parse Tree, Indentify, Node Containing, Items, Children, Root Node, Edge, Parent, Levels, Height
Typology: Study notes
1 / 3
This page cannot be seen from the preview
Don't miss anything!


class BinaryTree: def init(self,rootObj): self.key = rootObj self.leftChild = None self.rightChild = None
key
key
key
key
key
leftChild
leftChild
leftChild
leftChild
leftChild
rightChild
rightChild
rightChild
rightChild
rightChild
def inorder(tree): if tree != None: inorder(tree.getLeftChild()) print(tree.getRootVal()) inorder(tree.getRightChild())
def printexp(tree): if tree.leftChild: print('(', end=' ') printexp(tree.getLeftChild()) print(tree.getRootVal(), end=' ') if tree.rightChild: printexp(tree.getRightChild()) print(')', end=' ')
def height(tree): if tree == None: return - else: return 1 + max(height(tree.leftChild), height(tree.rightChild))
def printexp(tree): sVal = "" if tree: sVal = '(' + printexp(tree.getLeftChild()) sVal = sVal + str(tree.getRootVal()) sVal = sVal + printexp(tree.getRightChild()) + ')' return sVal
def postordereval(tree): opers = {'+':operator.add, '-':operator.sub, '*':operator.mul, '/':operator.truediv} res1 = None res2 = None if tree: res1 = postordereval(tree.getLeftChild()) res2 = postordereval(tree.getRightChild()) if res1 and res2: return operstree.getRootVal() else: return tree.getRootVal()
import operator class BinaryTree: def init(self,rootObj): self.key = rootObj self.leftChild = None self.rightChild = None
def insertLeft(self,newNode): if self.leftChild == None: self.leftChild=BinaryTree(newNode) else: t = BinaryTree(newNode) t.left = self.leftChild self.leftChild = t
def insertRight(self,newNode): if self.rightChild == None: self.rightChild=BinaryTree(newNode) else: t = BinaryTree(newNode) t.right = self.rightChild self.rightChild = t
def isLeaf(self): return ((not self.leftChild) and (not self.rightChild))
def getRightChild(self): return self.rightChild
def getLeftChild(self): return self.leftChild
def setRootVal(self,obj): self.key = obj
def getRootVal(self,): return self.key
def inorder(self): if self.leftChild: self.leftChild.inorder() print(self.key) if self.rightChild: self.rightChild.inorder()
def postorder(self): if self.leftChild: self.leftChild.postorder() if self.rightChild: self.rightChild.postorder() print(self.key)
def preorder(self): print(self.key) if self.leftChild: self.leftChild.preorder() if self.rightChild: self.rightChild.preorder()
def printexp(self): if self.leftChild: print('(', end=' ') self.leftChild.printexp() print(self.key, end=' ') if self.rightChild: self.rightChild.printexp() print(')', end=' ') def postordereval(self): opers = {'+':operator.add, '-':operator.sub, '*':operator.mul, '/':operator.truediv} res1 = None res2 = None if self.leftChild: res1 = self.leftChild.postordereval() if self.rightChild: res2 = self.rightChild.postordereval() if res1 and res2: return opersself.key else: return self.key