跳至主要内容

124. 二叉树中的最大路径和

/**
 * 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 maxPathSum(TreeNode* root) {
       
        if (root->left != 0 && root->right != 0)
        {
            int l = maxPathSum(root->left);
            int r = maxPathSum(root->right);

            int l1 = maxPathSum3(root->left);
            int r1 = maxPathSum3(root->right);

            int m1 = l1 + r1 + root->val;
            int m2 = l1 + root->val;
            int m3 = r1 + root->val;
            int m4 = root->val;
            int m5 = max(l, r);
            int m6 = max(l1, r1);
           
            return max(m1, max(m2, max(m3, max(m4, max(m5, m6)))));
        }
       
        if (root->left != 0)
        {
            int l = maxPathSum(root->left);
            int l1 = maxPathSum3(root->left);
           
            return max(l1, max(root->val, max(l1 + root->val, l)));
        }
       
        if (root->right != 0)
        {
            int r = maxPathSum(root->right);
            int r1 = maxPathSum3(root->right);
            return max(r1, max(root->val, max(r1 + root->val, r)));
        }
       
        return root->val;
    }
   
   
    int maxPathSum3(TreeNode* root) {
       
        if (root->left != 0 && root->right != 0)
        {
            int l = maxPathSum3(root->left);
            int r = maxPathSum3(root->right);

            return max(root->val, max(l, r) + root->val);
        }
       
        if (root->left != 0)
        {
            int l = maxPathSum3(root->left);
            return max(root->val, l + root->val);
        }
       
        if (root->right != 0)
        {
            int r = maxPathSum3(root->right);
            return max(root->val, r + root->val);
        }
       
        return root->val;
    }
   
    int max(int a, int b)
    {
        return a>b?a:b;
    }
     
};

评论

此博客中的热门博文

老毛子路由器无线桥接问题

  信道带宽:改成20M  关闭 DHCP 服务器  关闭动态 (DHCP) 路由 修改IP地址从192.168.123.1到192.168.1.114  无线 AP 工作模式:选择AP-Client+AP 无线 AP-Client 角色:选择LAN bridge 连上上级wifi done 路由器自身可能上不去网,执行: route add default  gw 192.168.1.1 不过这种方式无法翻墙 ////////////////////////////////////////////////////////////// 第二种方式 不改信道不关闭DHCP,保持网段是192.168.123.1 无线 AP 工作模式:选择AP-Client+AP 无线 AP-Client 角色:选择WAN 连上上级wifi done 路由器可以翻墙,但是192.168.1.1的机器访问不了192.168.123.1的机器 解决方法: 在192.168.123.1的机器把想要访问的机器比如192.168.123.100设置DMZ主机,这样就可以访问了,在 192.168.1.1能看到分配的ip比如192.168.1.115