Advertisement
Guest User

Untitled

a guest
Mar 24th, 2018
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.13 KB | None | 0 0
  1. """Solution for 'Average levels iin binary tree problem.
  2.  
  3. Given a non-empty binary tree,
  4. return the average value of the nodes on each level in the form of an array.
  5.  
  6. Input:
  7.    3
  8.   / \
  9.  9  20
  10.    /  \
  11.   15   7
  12.  
  13. Output: [3, 14.5, 11]
  14. """
  15.  
  16.  
  17. class TreeNode(object):
  18.     """Node of tree with value, left and right children."""
  19.     def __init__(self, value, left=None, right=None):
  20.         self.val = value
  21.         self.left, self.right = left, right
  22.  
  23.  
  24. def average_levels(root):
  25.  
  26.     levels = [root.val]
  27.  
  28.     def get_average_for_level(node):
  29.         """"""
  30.         next_level = 0
  31.         if node.left:
  32.             next_level += node.left.val
  33.         if node.right:
  34.             next_level += node.right.val
  35.  
  36.         nonlocal levels
  37.         if next_level:
  38.             levels.append(next_level / 2)
  39.  
  40.         if node.left:
  41.             get_average_for_level(node.left)
  42.         if node.right:
  43.             get_average_for_level(node.right)
  44.  
  45.     get_average_for_level(root)
  46.  
  47.     return levels
  48.  
  49.  
  50. root = TreeNode(3, TreeNode(9), TreeNode(20, TreeNode(15), TreeNode(7)))
  51. result = average_levels(root)
  52. print(result)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement