Binary tree
Weirane(讨论 | 贡献)2021年9月18日 (六) 16:37的版本 (建立内容为“Category:刷题 二叉树。 == 求深度的变种 == 例如 LeetCode [https://leetcode.com/problems/balanced-binary-tree/ 110] 和 [https://leetcode.com/pr…”的新页面)
二叉树。
求深度的变种
例如 LeetCode 110 和 543,所求值和深度有关,所以在求深度的递归过程中进行一些操作。
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