深度搜索&广度搜索&二 叉树(dfs+二叉树最大路径和)

image.png

要点:

  1. 最大路径和可能出现在三种情况中:
    左子树
    右子树
    根节点与左右子树
  2. 返回值,返回当前节点和左右分支中的一支的最大值
  3. maxsum 存放的事
    int dfs(TreeNode* root, int& maxsum){
        if(!root) return 0;
        int l = dfs(root->left, maxsum); // l: left child的分支最大值,
        int r = dfs(root->right, maxsum); //r: right child 的分支最大值
        maxsum = max(l+r+root->val, maxsum); // 和当前最大值比较
        return root->val + max(l,r); //child的分支 + 节点最大值
    }
    int maxPathSum(TreeNode* root) {
        int maxsum = INT_MIN;
        dfs(root, maxsum);
        return maxsum;
    }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容