import math
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def nearestPow(x, base):
k = int(math.log(x, base))
if abs(base**k - x) < abs(base**(k+1) - x):
return base**k
else:
return base**(k+1)
def printLevelOrder(root):
if root is None:
return
q = []
q.append(root)
while q:
count = len(q)
while count > 0:
temp = q.pop(0)
print(temp.val, end=' ')
if temp.left:
q.append(temp.left)
if temp.right:
q.append(temp.right)
count -= 1
def replaceNodes(root):
que = [root]
lvl = 1
minPrev = root.val
minCurr = root.val
while True:
length = len(que)
if not length:
break
minPrev = minCurr
minCurr = 1000000000000000000
while length:
temp = que.pop(0)
minCurr = min(temp.val, minCurr)
temp.val = nearestPow(temp.val, minPrev)
if temp.left:
que.append(temp.left)
if temp.right:
que.append(temp.right)
length -= 1
lvl += 1
printLevelOrder(root)
root = TreeNode(7)
root.left = TreeNode(4)
root.right = TreeNode(11)
root.left.right = TreeNode(23)
replaceNodes(root)
Original page link
Best Cool Tech Gadgets
Top favorite technology gadgets
0 comments:
Post a Comment