[LeetCode] 543. Diameter of Binary Tree

来源:互联网 发布:知乎为什么会被邀请 编辑:程序博客网 时间:2024/06/02 05:23

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 longest path 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.

/* diameter(node) = Depth(node->left) + 2 +                   Depth(node->right); Depth(node) = max(Depth(node->left),                    Depth(node->right)) + 1; */class Solution {public:    int diameterOfBinaryTree(TreeNode* root) {        return diameterofSubBTree(root).second;    }private:    pair<int, int> diameterofSubBTree(TreeNode *root) {        if (root == nullptr) return {-1, 0};        auto left = diameterofSubBTree(root->left);        auto right = diameterofSubBTree(root->right);        int diameter = left.first + 2 + right.first;        int depth = max(left.first, right.first) + 1;        return {depth, max(diameter,                         max(left.second, right.second))};    }};

这里写图片描述

原创粉丝点击