Diameter of Binary Tree

    这道题为简单题

  题目:

 

    

  思路:

    利用递归。把大问题化小,算每个节点的的左右子树的深度并得到该节点的最大长度self.sum,然后返回该节点左右子树中的最大深度加1

  代码:

 

 1 # Definition for a binary tree node.
 2 # class TreeNode(object):
 3 #     def __init__(self, x):
 4 #         self.val = x
 5 #         self.left = None
 6 #         self.right = None
 7 
 8 class Solution(object):
 9     def diameterOfBinaryTree(self, root):
10         """
11         :type root: TreeNode
12         :rtype: int
13         """
14         self.sum = 1
15         def abc(root):
16             if not root: return 0
17             long_l = abc(root.left)
18             long_r = abc(root.right)
19             self.sum = max(self.sum, long_r + long_l + 1)
20             return 1 + max(long_l, long_r)
21             
22             
23         abc(root)
24         return self.sum - 1

 

    

posted @ 2017-09-08 21:40  唐僧洗发爱飘柔  阅读(87)  评论(0)    收藏  举报