leetcode 543. 二叉树的直径(Diameter of Binary Tree)

题目描述:

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

示例 :

给定二叉树

          1
         / \
        2   3
       / \     
      4   5

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

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


解法:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    int getHeight(TreeNode* root, int& res){
        if(!root){
            return 0;
        }else{
            int lh = getHeight(root->left, res);
            int rh = getHeight(root->right, res);
            res = max(lh + rh, res);
            return max(lh, rh) + 1;
        }
    }
    
    int diameterOfBinaryTree(TreeNode* root) {
        int res = 0;
        getHeight(root, res);
        return res;
    }
};
posted @ 2019-03-26 10:09  zhanzq1  阅读(135)  评论(0)    收藏  举报