class
newNode:
def
__init__(
self
, key):
self
.left
=
None
self
.right
=
None
self
.key
=
key
def
findMaxBendsUtil(node,
Dir
, bends,
maxBends, soFar,
Len
):
if
(node
=
=
None
):
return
if
(node.left
=
=
None
and
node.right
=
=
None
):
if
(bends > maxBends[
0
]):
maxBends[
0
]
=
bends
Len
[
0
]
=
soFar
else
:
if
(
Dir
=
=
'l'
):
findMaxBendsUtil(node.left,
Dir
, bends,
maxBends, soFar
+
1
,
Len
)
findMaxBendsUtil(node.right,
'r'
, bends
+
1
,
maxBends, soFar
+
1
,
Len
)
else
:
findMaxBendsUtil(node.right,
Dir
, bends,
maxBends, soFar
+
1
,
Len
)
findMaxBendsUtil(node.left,
'l'
, bends
+
1
,
maxBends, soFar
+
1
,
Len
)
def
findMaxBends(node):
if
(node
=
=
None
):
return
0
Len
=
[
0
]
bends
=
0
maxBends
=
[
-
1
]
if
(node.left):
findMaxBendsUtil(node.left,
'l'
, bends,
maxBends,
1
,
Len
)
if
(node.right):
findMaxBendsUtil(node.right,
'r'
, bends,
maxBends,
1
,
Len
)
Len
[
0
]
+
=
1
return
Len
[
0
]
if
__name__
=
=
'__main__'
:
root
=
newNode(
10
)
root.left
=
newNode(
8
)
root.right
=
newNode(
2
)
root.left.left
=
newNode(
3
)
root.left.right
=
newNode(
5
)
root.right.left
=
newNode(
2
)
root.right.left.right
=
newNode(
1
)
root.right.left.right.left
=
newNode(
9
)
print
(findMaxBends(root)
-
1
)