zoukankan      html  css  js  c++  java
  • [LeetCode] 543. 二叉树的直径 ☆(递归、数最大深度)

    描述

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

    示例 :
    给定二叉树

    1
    /
    2 3
    /
    4 5
    返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。

    注意:两结点之间的路径长度是以它们之间边的数目表示。

    解析

    直觉是求给定树的左右子树的最大深度和。其实不尽然,也有可能单单在给定树的一边,所以需要记录一下当前子树的左右子树的最大深度和。

    代码

    private int maxHeight = 0;
        public int diameterOfBinaryTree(TreeNode root) {
            if (null == root) {
                return 0;
            }
            diameterOfBinaryTreeH(root);
            return maxHeight;
        }
    
        public int diameterOfBinaryTreeH(TreeNode root) {
            if (null == root) {
                return 0;
            }
            int leftNum = diameterOfBinaryTreeH(root.left);
            int rightNum = diameterOfBinaryTreeH(root.right);
            maxHeight = Math.max(leftNum + rightNum, maxHeight);//因为最长的直径也能在当前子树的左右子树上
            return Math.max(leftNum, rightNum) + 1;
        }
  • 相关阅读:
    requirejs官网
    【PC端】jQuery+PHP实现浏览更多内容(jquery.more.js插件)
    自学Zabbix4.0之路
    自学Python-socket基础
    自学Aruba集锦
    自学zabbix集锦
    自学工业控制网络之路
    自学Linux命令行与Shell脚本之路
    自学Aruba之路
    自学Zabbix之路
  • 原文地址:https://www.cnblogs.com/fanguangdexiaoyuer/p/12061090.html
Copyright © 2011-2022 走看看