文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
二叉树的直径
解题思路
递归。
代码实现
/**
* Definition for a binary tree node.
* class TreeNode {
* val: number
* left: TreeNode | null
* right: TreeNode | null
* constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
* }
*/
const diameterOfBinaryTree = (root: TreeNode | null): number => {
let ans: number = 0;
const depth = (rootNode: TreeNode | null): number => {
if (!rootNode) return 0;
const L: number = depth(rootNode.left);
const R: number = depth(rootNode.right);
ans = Math.max(ans, L + R + 1); // 将每个节点最大直径(左子树深度 + 右子树深度) 与当前最大值比较并取大者
return Math.max(L, R); // 返回节点深度
};
depth(root);
return ans;
};
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论