Diameter of Binary Tree

题目来源
这道题目,我想了想,计算一棵树中距离最远的两个节点。肯定是需要遍历一遍的,怎么遍历怎么计算,没想出来。或者说利用树的什么性质来算。想想树有啥性质。
然后我又可耻的看了下答案,实际上就是遍历,记录下每个节点左右子树的最深层次,然后加上该节点即为以该节点为顶的最长路径距离。代码如下:

/**
 * 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 l = 0;
    int diameterOfBinaryTree(TreeNode* root) {
        maxDepth(root);
        return l;
    }
    
    int maxDepth(TreeNode *node)
    {
        if (node == NULL)
            return 0;
        int left = 0, right = 0;
        if (node->left)
            left = maxDepth(node->left);
        if (node->right)
            right = maxDepth(node->right);
        l = max(l, left+right);
        return max(left, right) + 1;
    }
};

确实是个简单题,但是没做过确实也不太好想,加油。

你可能感兴趣的:(Diameter of Binary Tree)