Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Using Python 3: I am having trouble creating a binary tree and actually using br

ID: 3803440 • Letter: U

Question

Using Python 3:

I am having trouble creating a binary tree and actually using breadth first search to solve this. Any help would be greatly appreciated. I know that this can be easily solved going from bottom up but the goal is to go top to bottom. Thank you in advance.

Link to the text file of the triangle: https://drive.google.com/file/d/0B23lG851VqEdUzFTU1E1bXhObTA/view

Project Euler net Maximum path sum I Problem 18 By starting at the top of the triangle below and moving to adjacent numbers on the row below, the maximum total from top to bottom is 23. 74 2 4 6 8 59 3 That is, 3+7+ 4 9 23. Find the maximum total from top to bottom of the triangle below: 75 95 64 17 47 82 18 35 87 10 20 04 82 47 65 19 01 23 75 03 34 88 02 77 73 07 63 67 99 65 04 28 06 16 70 92 41 41 26 56 83 40 80 70 33 41 48 72 33 47 32 37 16 94 29 53 71 44 65 25 43 91 52 97 51 14 70 11 33 228 77 73 17 78 39 68 17 57 91 71 52 38 17 14 91 43 58 50 27 29 48 63 66 04 6B89 53 67 30 73 16 69 87 40 31 04 62 98 27 23 09 70 98 73 93 38 53 60 04 23

Explanation / Answer

Your example seems to want to get sum of adjacent element in breadth first search (i.e., level order gtraversal).

In below code list l is having all element of the given level. You can use that data in any way you want. I did what I get from given example.

Please build your tree and run it.

# link for code https://goo.gl/YY61Kp

# A node structure
class Node:

# A utility function to create a new node
def __init__(self, key):
self.data = key
self.left = None
self.right = None

def getSumUsingLevelOrder(root):
h = height(root)
sum_adjacent = 0
  
for i in range(1, h+1):
l = []
givenLevelAsList(root, i, l)
if (len(l) == 1):
sum_adjacent += l[0]
continue
sum_adjacent += l[i-2]
return sum_adjacent

# Print nodes at a given level
def givenLevelAsList(root , level, l):
if root is None:
return
if level == 1:
l.append(root.data)
elif level > 1 :
givenLevelAsList(root.left , level-1, l)
givenLevelAsList(root.right , level-1, l)


""" Compute the height of a tree--the number of nodes
along the longest path from the root node down to
the farthest leaf node
"""
def height(node):
if node is None:
return 0
else :
# Compute the height of each subtree
lheight = height(node.left)
rheight = height(node.right)

#Use the larger one
if lheight > rheight :
return lheight+1
else:
return rheight+1

# Driver program to test above function
root = Node(3)
root.left = Node(7)
root.right = Node(4)
root.left.left = Node(2)
root.left.right = Node(4)
root.right.left = Node(6)
root.left.left.left = Node(8)
root.left.left.right = Node(5)
root.right.left.left = Node(9)
root.right.left.right = Node(3)

print "Sum -",
print getSumUsingLevelOrder(root)

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote