Skip to content

Latest commit

 

History

History
28 lines (23 loc) · 780 Bytes

543. Diameter of Binary Tree.md

File metadata and controls

28 lines (23 loc) · 780 Bytes

思路

求二叉树的直径,所谓直径就是两点之间的最远距离。对于树中的每个节点,我们都可以计算出经过该节点的两点间的最远距离(就等于其左子树的高加上右子树的高)。计算左右子树的高就是一个中序遍历。

时空复杂度均为O(n)

C++

class Solution {
private:
    int res = 0;
    int inorder(TreeNode *root){
        if(!root) return 0;
        int l = inorder(root -> left);
        int r = inorder(root -> right);
        res = max(res, l + r);
        return 1 + max(l, r);
    }
public:
    int diameterOfBinaryTree(TreeNode* root) {
        inorder(root);
        return res;
    }
};