countOdd += treeCountOddGE(node,start) countOdd += treeCountOddLE(node,end) return countOdd #main function if len(sys.argv) == 3: #initialize an empty binary tree tree = BinarySearchTree() #variable used to store the end result result = "" #open the file containing the values to be adde to the BinarySearchTree dataFile = open(sys.argv[1], 'r') #add all of the values from the file to the tree for line in dataFile: node = TreeNode(int(line)) tree.insert(node,tree.locateParentUpdateSize(node)) #open the file containing the ranges to check dataRanges = open(sys.argv[2],'r') #iterate through each line of the file for line in dataRanges: #get the starting and ending values of the range i = 0 start = "" end = "" while(line[i] != ' '): start += line[i] i+=1 start = int(start) while(line[i] != '\n'): i+=1 end += line[i]
from RedBlackTree import RedBlackTree from RedBlackLeafNode import BlackLeafNode from RedBlackNode import RedBlackNode from BinarySearchTree import BinarySearchTree from TreeNode import TreeNode from evenSumRange import treeCountOddInRange from balancedEvenSumRange import treeCountOddInRangeBalanced t2 = BinarySearchTree() t = RedBlackTree() n2 = TreeNode(17) t2.insert(n2, t2.locateParentUpdateSize(n2)) n1 = RedBlackNode(17) t.insert(n1, t.locateParentUpdateSize(n1)) n2 = TreeNode(54) t2.insert(n2, t2.locateParentUpdateSize(n2)) n1 = RedBlackNode(54) t.insert(n1, t.locateParentUpdateSize(n1)) n2 = TreeNode(12) t2.insert(n2, t2.locateParentUpdateSize(n2)) n1 = RedBlackNode(12) t.insert(n1, t.locateParentUpdateSize(n1)) n2 = TreeNode(60) t2.insert(n2, t2.locateParentUpdateSize(n2)) n1 = RedBlackNode(60) t.insert(n1, t.locateParentUpdateSize(n1)) n2 = TreeNode(18)