[LeetCode]543. Diameter of Binary Tree

来源:互联网 发布:ie6修复软件 编辑:程序博客网 时间:2024/06/06 20:48

[LeetCode]543. Diameter of Binary Tree

题目描述

这里写图片描述

思路

最长路径必然是先从下往上,再从上往下,因此使用DFS,同时来维护一个最大值,在DFS的过程中,返回的是当前节点到左子节点对应的叶节点和右子节点对应的叶节点的最大距离,同时返回后与当前的maxLength比较,若左右子节点的和更大,则更新。

代码

#include <iostream>#include <algorithm>using namespace std;struct TreeNode {    int val;    TreeNode* left;    TreeNode* right;    TreeNode(int x) : val(x), left(NULL), right(NULL) {}};class Solution {public:    int maxLength = 0;    int nodeDepth(TreeNode* node) {        if (!node)            return 0;        int lLength = nodeDepth(node->left);        int rLength = nodeDepth(node->right);        maxLength = max(maxLength, lLength + rLength);        return max(lLength + 1, rLength + 1);    }    int diameterOfBinaryTree(TreeNode* root) {        nodeDepth(root);        return maxLength;    }};int main() {    TreeNode* r1 = new TreeNode(1);    TreeNode* r2 = new TreeNode(1);    TreeNode* r3 = new TreeNode(1);    TreeNode* r4 = new TreeNode(1);    TreeNode* r5 = new TreeNode(1);    r1->left = r2;    r1->right = r3;    r2->left = r4;    r2->right = r5;    Solution s;    cout << s.diameterOfBinaryTree(r1) << endl;    system("pause");}
0 0
原创粉丝点击