首页 > 其他 > 详细

二叉树——543. 二叉树的直径

时间:2021-04-11 15:46:40      阅读:27      评论:0      收藏:0      [点我收藏+]

二叉树——543. 二叉树的直径

题目:

技术分享图片

思路:

二叉树的直径,就是求最长路径然后减1。所以现在问题就变为了求最长路径的问题。

最长路径的问题又可以类比求最大路径和的问题,所以就是求左子树的最长路径和右子树的最长路径然后加上root结点就是最长路径了,遍历顺序自然和求最大路径和一样也是后序遍历,然后都有了,开始操作吧。

代码:

class Solution {
    int ans;
    int depth(TreeNode* node){
        // 访问到空节点了,返回0
        if(!node) return 0;
        int L = depth(node->left);     // 左 
        int R = depth(node->right);    // 右
        ans = max(ans, L+R+1);         // 中
        // 返回该节点为根的子树的深度
        return max(L,R) + 1;
    }
public:
    int diameterOfBinaryTree(TreeNode* root) {
        ans =1;
        depth(root);
        return ans - 1;
    }
};

Rank:

技术分享图片

Tips:

就是虽然问法和求的东西不一样,但是本质是一样的,要类比,没准就有思路了。

二叉树——543. 二叉树的直径

原文:https://www.cnblogs.com/lzyrookie/p/14643375.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!