LeetCode 543 Easy 二叉树最长路径 Python

本文深入探讨了计算二叉树直径的算法实现,通过递归计算节点的高度,巧妙地利用了左子树和右子树的最大高度之和来更新最长路径。此算法类似于求解二叉树中最大路径和的问题。
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
def diameterOfBinaryTree(self, root):
    """
    一个节点要么作为路径的一部分,要么就是作为路径的根节点
    作为路径的根节点时,路径长就是左孩子的最大高度+右孩子的最大高度+1
    所以用计算高度的方式来计算,更新self.ans
    return的时候return当前高度,也就是说自己作为路径的一部分时的情况,

    这个题有点像124题
    """
    self.ans = 1

    def getHeight(root):
        if root == None:
            return 0
        l = getHeight(root.left)
        r = getHeight(root.right)
        self.ans = max(self.ans, l + r + 1)
        return max(l, r) + 1

    getHeight(root)
    return self.ans - 1

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值