-
Notifications
You must be signed in to change notification settings - Fork 461
Expand file tree
/
Copy path543_Diameter_of_Binary_Tree.py
More file actions
26 lines (24 loc) · 947 Bytes
/
Copy path543_Diameter_of_Binary_Tree.py
File metadata and controls
26 lines (24 loc) · 947 Bytes
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
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def diameterOfBinaryTree(self, root):
"""
:type root: TreeNode
:rtype: int
"""
self.treeDiameter = 0
self.diameterOfBinaryTreeHelper(root)
return self.treeDiameter
def diameterOfBinaryTreeHelper(self, currentNode):
if not currentNode:
return 0
leftSubTreeMaxHeight = self.diameterOfBinaryTreeHelper(currentNode.left)
rightSubTreeMaxHeight = self.diameterOfBinaryTreeHelper(currentNode.right)
currentDiameter = leftSubTreeMaxHeight + rightSubTreeMaxHeight
self.treeDiameter = max(self.treeDiameter, currentDiameter)
currentNodeMaxHeight = max(leftSubTreeMaxHeight, rightSubTreeMaxHeight) + 1
return currentNodeMaxHeight