231 字
1 分钟
算法之二叉树的直径
543. 二叉树的直径
给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。

解法:
1.DFS递归
思路:
既然是求二叉树中直径长度是任意两个节点中的最大路径值
那我们直接求每个节点的左子树和右子树深度,然后一个个节点进行左右深度和比较就能找出、
/** * Definition for a binary tree node. * function TreeNode(val, left, right) { * this.val = (val===undefined ? 0 : val) * this.left = (left===undefined ? null : left) * this.right = (right===undefined ? null : right) * } *//** * @param {TreeNode} root * @return {number} */var diameterOfBinaryTree = function (root) { if (!root) { return 0; } function maxDepth(node) { if (!node) { return 0 } let dep = 1; dep += Math.max(maxDepth(node.left), maxDepth(node.right)); return dep; }
return Math.max( maxDepth(root.left) + maxDepth(root.right), diameterOfBinaryTree(root.left), diameterOfBinaryTree(root.right) );};