• 543. Diameter of Binary Tree 二叉树的直径



    Given a binary tree, you need to compute the length of the diameter of the tree. The diameter of a binary tree is the length of the longestpath between any two nodes in a tree. This path may or may not pass through the root.

    Example:
    Given a binary tree 

              1
             / 
            2   3
           /      
          4   5    
    

    Return 3, which is the length of the path [4,2,1,3] or [5,2,1,3].

    Note: The length of path between two nodes is represented by the number of edges between them.


    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 quantities:

    * the diameter of T’s left subtree
    * the diameter of T’s right subtree
    * the longest path between leaves that goes through the root of T (this can be computed from the heights of the subtrees of T)

    1. /**
    2. * Definition for a binary tree node.
    3. * public class TreeNode {
    4. * public int val;
    5. * public TreeNode left;
    6. * public TreeNode right;
    7. * public TreeNode(int x) { val = x; }
    8. * }
    9. */
    10. public class Solution {
    11. public int DiameterOfBinaryTree(TreeNode root) {
    12. if (root == null)
    13. return 0;
    14. /* get the height of left and right sub trees */
    15. int lheight = height(root.left);
    16. int rheight = height(root.right);
    17. /* get the diameter of left and right subtrees */
    18. int ldiameter = DiameterOfBinaryTree(root.left);
    19. int rdiameter = DiameterOfBinaryTree(root.right);
    20. /* Return max of following three
    21. 1) Diameter of left subtree
    22. 2) Diameter of right subtree
    23. 3) Height of left subtree + height of right subtree + 1 */
    24. return Math.Max(lheight + rheight, Math.Max(ldiameter, rdiameter));
    25. }
    26. /*The function Compute the "height" of a tree. Height is the
    27. number f nodes along the longest path from the root node
    28. down to the farthest leaf node.*/
    29. public int height(TreeNode node) {
    30. if (node == null)
    31. return 0;
    32. /* If tree is not empty then height = 1 + max of left
    33. height and right heights */
    34. return (1 + Math.Max(height(node.left), height(node.right)));
    35. }
    36. }






  • 相关阅读:
    c# Queue实现生产者(Producer)消费者(Consumer)模式
    无法连接到已配置的web服务器
    2018年新年计划
    md5加密、Des加密对称可逆加密、RSA非对称可逆加密、https单边验证、银行U盾双边认证
    通过HTTP协议实时获取微信聊天记录
    c#委托与事件
    c#异步多线程
    详细解读PHP时区修改正确方法
    Mysql分库分表方案
    关于Windows下安装mongodb和加入Windows系统启动项
  • 原文地址:https://www.cnblogs.com/xiejunzhao/p/ac46feea266ab08377ddd3fff9b2c61e.html
Copyright © 2020-2023  润新知