zoukankan      html  css  js  c++  java
  • LeetCode 543. 二叉树的直径

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

    示例 :
    给定二叉树

              1
             / 
            2   3
           /      
          4   5    
    

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

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

    思路:刚开始我走了一些弯路,我想的是求出左边的最大值,加上右边的最大值,就是这棵树的直径,但是后来发现,他的最长直径不一定是两边之和,所以采用了定义全局变量的方法,将整棵树的节点距离遍历,求出最长的直径。

     1 /**
     2  * Definition for a binary tree node.
     3  * struct TreeNode {
     4  *     int val;
     5  *     struct TreeNode *left;
     6  *     struct TreeNode *right;
     7  * };
     8  */
     9  int max=0;
    10 int depth(struct TreeNode* root)
    11 {
    12     if(root==NULL){
    13         return 0;
    14     }
    15     int m=depth(root->left);
    16     int n=depth(root->right);
    17     max=max>(m+n)?max:(m+n);
    18     return 1+(m>n?m:n);
    19 }
    20 int diameterOfBinaryTree(struct TreeNode* root){
    21     max=0;
    22     depth(root);
    23     return max;
    24 }
  • 相关阅读:
    解决input获取焦点时底部菜单被顶上来问题
    JavaScript学习笔记
    JavaScript表单验证
    js 中{},[]中括号,大括号使用详解
    陀飞轮
    娱乐天空
    左右手
    软测 学习
    git 学习
    spring boot 学习
  • 原文地址:https://www.cnblogs.com/woju/p/12781928.html
Copyright © 2011-2022 走看看