美文网首页
2018-03-10 求二叉树直径

2018-03-10 求二叉树直径

作者: 半瓶酱油 | 来源:发表于2018-03-10 11:07 被阅读0次

二叉树的直径就是任意两点之间的最大距离。图中直径为[4,2,1,3]。

可以看到,图中的树直径为4到3之间的距离,而经过1点的距离才是最长的。

可以将这条最长的路径分为两部分,即[1,2,4] + [1,3],因此可以将这个问题转化为:求左右子树最大深度之和。


    //遍历所有节点,返回 节点的左右子树最大深度之和 与子节点的左右子树最大深度之和 的最大值

    public int diameterOfBinaryTree(TreeNode root) {

        if (root == null) return 0;

        int maxDepth = depth(root.left) + depth(root.right);

        return max(maxDepth, diameterOfBinaryTree(root.left), diameterOfBinaryTree(root.right));

    }

    //求深度

    public int depth(TreeNode root) {

        if (root == null) return 0;

        return 1 + max(depth(root.left), depth(root.right));

    }

    public int max(int p, int q) {

        return p > q ? p : q;

    }

    public int max(int o, int p, int q) {

        return max(max(o, p), q);

    }

相关文章

  • 2018-03-10 求二叉树直径

    二叉树的直径就是任意两点之间的最大距离。图中直径为[4,2,1,3]。 可以看到,图中的树直径为4到3之间的距离,...

  • 二叉树求直径

    给定一个二叉树,写代码传入根节点后求出直径?二叉树的直径是任意两个节点之间的最远距离。 如上面二叉树的直径为:3....

  • 543. Diameter of Binary Tree

    求二叉树的直径,深度优先遍历。 时间复杂度O(N),为遍历一棵二叉树的时间复杂度,每个节点只被访问一次。 空间复杂...

  • 二叉树的直径

    问题1 二叉树的最大直径 原理 首先,需要定义一个变量记录二叉树的直径 其次,递归遍历,找到每一层二叉树的 递归的...

  • 2020-03-10 刷题1(二叉树的直径)

    543 二叉树的直径 对于根节点r,它的直径无非有三种可能:左子树的直径,右子树的直径,已经左右子树高度之和。所以...

  • 算法模板(五)树基础算法

    最小生成树 求树的直径 求树的重心

  • leetcode每日一题 python解法 3月10日

    难度:简单 题目内容: 给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大...

  • LeetCode | 0543. Diameter of Bin

    LeetCode 0543. Diameter of Binary Tree二叉树的直径【Easy】【Python...

  • 二叉树的直径

    题目描述:给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可...

  • LeetCode 543. 二叉树的直径

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

网友评论

      本文标题:2018-03-10 求二叉树直径

      本文链接:https://www.haomeiwen.com/subject/mfvvfftx.html