zoukankan      html  css  js  c++  java
  • [GeeksForGeeks] Diameter of a Binary Tree

    The diameter of a tree (sometimes called the width) is the number of nodes on the longest path between two leaves in the tree. The diagram below shows two trees each with diameter nine, the leaves that form the ends of a longest path are shaded (note that there is more than one path in each tree of length nine, but no path longer than nine nodes).

     The diameter of a tree T is the largest of the following.

    1. the diameter of T's left subtree

    2. the diameter of T's right subtree

    3. the longest path between leave nodes that goes through the root of T. This can be computed from the heights of the subtrees of T.

    O(n) runtime, O(h) space, h is the height of the given binary tree.

     1 class ReturnEntry {
     2     int diameter;
     3     int height;
     4     ReturnEntry(int d, int h) {
     5         diameter = d;
     6         height = h;
     7     }
     8 }
     9 public class DiameterOfBinaryTree {
    10     public static int getDiameter(TreeNode root) {
    11         return getDiameterRecur(root).diameter;
    12     }
    13     private static ReturnEntry getDiameterRecur(TreeNode node) {
    14         ReturnEntry ret = new ReturnEntry(0, 0);
    15         if(node == null) {
    16             return ret;
    17         }
    18         ReturnEntry left = getDiameterRecur(node.left);
    19         ReturnEntry right = getDiameterRecur(node.right);
    20         ret.diameter = Math.max(left.height + right.height + 1, Math.max(left.diameter, right.diameter));
    21         ret.height = Math.max(left.height, right.height) + 1;
    22         return ret;
    23     }
    24 }

    Related Problems

    [LintCode] Binary Tree Longest Consecutive Sequence II

  • 相关阅读:
    C. Dima and Salad 背包好题
    centos7下查看cup核数
    code码说明
    数据库慢查询
    centos7重启Mysql命令
    many connection errors,更改max_connection_errors的值
    CentOS7 linux下yum安装redis以及使用
    django Warning: (3135, "'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes
    linux命令
    linux命令解压压缩rar文件的详细步骤
  • 原文地址:https://www.cnblogs.com/lz87/p/7524183.html
Copyright © 2011-2022 走看看