231 字
1 分钟
算法之二叉树的直径

543. 二叉树的直径#

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

image-20210620140459295

解法:

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)
);
};
算法之二叉树的直径
https://nollieleo.github.io/posts/算法之二叉树的直径/
作者
翁先森
发布于
2021-06-20
许可协议
CC BY-NC-SA 4.0