领扣LintCode算法问题答案-1181. 二叉树的直径
发布日期:2021-06-30 17:10:14 浏览次数:3 分类:技术文章

本文共 1698 字,大约阅读时间需要 5 分钟。

领扣LintCode算法问题答案-1181. 二叉树的直径

目录

1181. 二叉树的直径

描述

给定一颗二叉树,您需要计算树的直径长度。 二叉树的直径是树中任意两个节点之间最长路径的长度。 此路径不一定会通过树根。

  • 两个节点之间的路径长度由它们之间的边数表示。

样例 1:

给定一棵二叉树           1         / \        2   3       / \           4   5    返回3, 这是路径[4,2,1,3] 或者 [5,2,1,3]的长度.

样例 2:

输入:[2,3,#,1]输出:2解释:      2    /   3 /1

题解

/** * Definition of TreeNode: * public class TreeNode { *     public int val; *     public TreeNode left, right; *     public TreeNode(int val) { *         this.val = val; *         this.left = this.right = null; *     } * } */public class Solution {
/** * @param root: a root of binary tree * @return: return a integer */ public int diameterOfBinaryTree(TreeNode root) {
// write your code here Pointer
ret = new Pointer<>(0); diameterOfBinaryTree(root, ret); return ret.getV(); } private int diameterOfBinaryTree(TreeNode root, Pointer
ret) {
// write your code here if (root == null) {
return 0; } int left = 0; if (root.left != null) {
left = diameterOfBinaryTree(root.left, ret) + 1; } int right = 0; if (root.right != null) {
right = diameterOfBinaryTree(root.right, ret) + 1; } if (left + right > ret.getV()) {
ret.setV(left + right); } return Math.max(left, right); } class Pointer
{
private T v; public Pointer(T v) {
this.v = v; } public T getV() {
return v; } public void setV(T v) {
this.v = v; }}}

鸣谢

非常感谢你愿意花时间阅读本文章,本人水平有限,如果有什么说的不对的地方,请指正。

欢迎各位留言讨论,希望小伙伴们都能每天进步一点点。

转载地址:https://le-yi.blog.csdn.net/article/details/108892919 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:领扣LintCode算法问题答案-1187. 数组中的K-diff对
下一篇:领扣LintCode算法问题答案-1178. 学生出勤记录 I

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月19日 07时01分03秒