leetcode和算法----日更

leetcode 543 二叉树的直径

2020-01-31  本文已影响0人  Arsenal4ever

首先理解题意,最大直径不包含当前节点。

其次求直径解法:求该节点左边的最大长度+该节点右边的最大长度

# 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.maxLength = 0
        self.getLength(root)
        return self.maxLength

    def getLength(self, node):
        if not node:
            return 0
        left = self.getLength(node.left)    # 左边最长路径
        right = self.getLength(node.right)  # 右边最长路径
        self.maxLength = max(self.maxLength, left + right)  # 直径
        return max(left, right) + 1     # 以当前节点为定点的最长路径
上一篇下一篇

猜你喜欢

热点阅读