-
Notifications
You must be signed in to change notification settings - Fork 0
/
averageLevelsBinaryTree.py
67 lines (58 loc) · 1.67 KB
/
averageLevelsBinaryTree.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
"""
Given a non-empty binary tree, return the average value of the nodes on each level in the form of an array.
Example 1:
Input:
3
/ \
9 20
/ \
15 7
Output: [3, 14.5, 11]
Explanation:
The average value of nodes on level 0 is 3, on level 1 is 14.5, and on level 2 is 11. Hence return [3, 14.5, 11].
Note:
The range of node's value is in the range of 32-bit signed integer.
"""
import random
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class Solution:
def trav(self, level, curr_level, root):
if root is None:
return 0
else:
if(curr_level>len(level)):
level.append(root.val)
else:
level[curr_level] = level[curr_level]+root.val
left = self.trav(level, (curr_level+1), root.left)
right = self.trav(level, (curr_level+1), root.right)
def avgLevels(self, root):
level = []
curr_level = 1
self.trav(level, curr_level, root)
print(level)
print(curr_level)
def insert(self, root, node):
if root is None:
root = node
else:
if root.val < node.val:
if root.right is None:
root.right = node
else:
self.insert(root.right, node)
else:
if root.left is None:
root.left = node
else:
self.insert(root.left, node)
temp = Solution()
root = TreeNode(1)
for i in range(0, 15):
node = TreeNode(random.randint(1, 20))
temp.insert(root, node)
temp.avgLevels(root)