📣 VIP通行证夏日特惠 限时立减$68
12
返回列表 发新帖
楼主: Cacacactus
跳转到指定楼层
上一主题 下一主题
收起左侧

脸家新鲜跪经

🔗
zhutianqi2017 2017-12-5 06:20:34 | 只看该作者
全局:
一亩三分地严打"顶""好贴""收藏了"之类的垃圾回复帖!被警告三次,系统会自动封杀ID!

想支持楼主,请点击帖子下方的"好苗""分享""收藏"键,酌情给楼主加大米(系统不扣你自己的分)。
积分不够看不了帖子,请参考论坛导航里的"帮助","新手提纲"里有攒积分指南
回复

使用道具 举报

🔗
zhutianqi2017 2017-12-5 06:24:29 | 只看该作者
全局:
我觉得这题不难啊,和124一样的,你找到max path 的root 的时候set a pointer to it. tree node 稍微改一下, 每个tree node 要记录 max path to end 是 left or right, 然后你最后回到 你set 那个root 左右同时加 你记录的 path就可以了, 比124 多几行code
回复

使用道具 举报

🔗
hychin 2017-12-5 14:08:27 | 只看该作者
全局:

宝宝不哭,我给你写了一个返回路径的


    int helper(TreeNode* root, int& max_path, vector<int>& max_path_vec, vector<int>& path){
         if(!root) return 0;
                 vector<int> left_path, right_path;
         int left = max(helper(root->left, max_path, max_path_vec, left_path), 0);
         int right = max(helper(root->right, max_path, max_path_vec, right_path), 0);
             if(max_path < root->val + left + right){
                    max_path = root->val + left + right;
                    max_path_vec.clear();
                    max_path_vec.insert(max_path_vec.end(), left_path.rbegin(), left_path.rend());
                    max_path_vec.push_back(root->val);
                    max_path_vec.insert(max_path_vec.end(), right_path.begin(), right_path.end());
                 }
                 path.clear();
                 path.push_back(root->val);
                 if(left > right){
                    path.insert(path.end(), left_path.begin(), left_path.end());
                 }
                 else path.insert(path.end(), right_path.begin(), right_path.end());
         return root->val + max(left, right);
    }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表