from
queue
import
Queue
class
Node:
def
__init__(
self
, data):
self
.data
=
data
self
.left
=
None
self
.right
=
None
def
helper(root, val, flag):
if
flag:
temp
=
root.data
root.data
+
=
val
val
=
temp
if
root.left
is
not
None
:
helper(root.left, val,
not
flag)
if
root.right
is
not
None
:
helper(root.right, val,
not
flag)
else
:
if
root.left
is
not
None
:
helper(root.left, val,
not
flag)
if
root.right
is
not
None
:
helper(root.right, val,
not
flag)
def
printLevelOrder(root):
if
root
is
None
:
return
q
=
Queue()
q.put(root)
while
not
q.empty():
node
=
q.get()
print
(node.data, end
=
" "
)
if
node.left
is
not
None
:
q.put(node.left)
if
node.right
is
not
None
:
q.put(node.right)
def
newNode(data):
temp
=
Node(data)
temp.left
=
temp.right
=
None
return
temp
if
__name__
=
=
"__main__"
:
root
=
newNode(
3
)
root.left
=
newNode(
2
)
root.right
=
newNode(
5
)
root.left.left
=
newNode(
1
)
root.left.right
=
newNode(
4
)
root.right.right
=
newNode(
7
)
print
(
"Level Order traversal of binary tree without transformation:"
)
printLevelOrder(root)
helper(root,
0
,
True
)
print
(
"\nLevel Order traversal of binary tree after transformation:"
)
printLevelOrder(root)