543.二叉树的直径
给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。
本题需要明确二叉树的直径计算方法:
- 二叉树的直径不一定过根节点,需要遍历左子节点和右子节点。
- root的直径 = 左子树深度+右子树的深度+1
- root的高度 = Max(左子树深度,右子树深度) + 1
所以保存一个节点当前直径最大值,再递归的求每个节点左右子树的深度,每次递归都保存直径最大值,最后返回即可。
class Solution:
def diameterOfBinaryTree(self, root: Optional[TreeNode]