Binary tree

Weirane讨论 | 贡献2021年9月18日 (六) 16:37的版本 (建立内容为“Category:刷题 二叉树。 == 求深度的变种 == 例如 LeetCode [https://leetcode.com/problems/balanced-binary-tree/ 110] 和 [https://leetcode.com/pr…”的新页面)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)

二叉树。

求深度的变种

例如 LeetCode 110543,所求值和深度有关,所以在求深度的递归过程中进行一些操作。

LeetCode 543. Diameter of Binary Tree

树的直径为节点左右深度之和的最大值。便在计算深度时顺便遍历每个节点求最大的深度和,就为直径:

def diameterOfBinaryTree(self, root: Optional[TreeNode]) -> int:
    diameter = 0
                                                                 
    def rec(root):
        nonlocal diameter
        if root is None:
            return 0
        left = rec(root.left)
        right = rec(root.right)
        diameter = max(diameter, left + right)
        return max(left, right) + 1
                                                                 
    rec(root)
    return diameter