
算法练习day2二叉树的直径定义为树中任意两个节点之间最长路径的长度。这个路径不一定经过根节点但路径的长度由它们之间的边数表示。例如对于以下二叉树1 / \ 2 3 / \ 4 5最长路径是节点 4 → 2 → 5或者 5 → 2 → 4长度为 3 条边。在算法实现中通常使用深度优先搜索DFS来计算每个节点的左右子树高度然后更新直径值对于每个节点计算左子树高度和右子树高度当前节点可能形成的直径 左子树高度 右子树高度全局维护最大直径值上面代码中的diameterOfBinaryTree函数就是基于这个思路实现的。function diameterOfBinaryTree(root) { let ans 0 // 返回当前节点子树高度 function getHeight(node) { if (!node) return -1 const leftH getHeight(node.left) const rightH getHeight(node.right) ans Math.max(ans, leftH rightH) return Math.max(leftH rightH) 1 } getHeight(root) return ans }