题解 | #农场最大产奶牛群#
农场最大产奶牛群
https://www.nowcoder.com/practice/16d827f124e14e05b988f3002e7cd651
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * }; */ #include <queue> class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @return int整型 */ void dfs(TreeNode* root, int sum, int &max_sum) { if(!root) return; sum += root->val; if(!root->left && !root->right) { max_sum = max(max_sum, sum); return; } dfs(root->left, sum, max_sum); dfs(root->right, sum, max_sum); } int maxMilkSum(TreeNode* root) { // write code here // 遍历每个节点r,找出以r为根节点,左子树和右子树中分别找出到叶子节点 和最大的路径 if(!root) return 0; queue<TreeNode*> q; q.push(root); int ans = 0; while(!q.empty()) { int len = q.size(); for(int i=0; i<len; ++i) { TreeNode* t = q.front(); q.pop(); int temp_l = 0, temp_r = 0; dfs(t->left, 0, temp_l); dfs(t->right, 0, temp_r); int t_sum = t->val + temp_l + temp_r; ans = max(ans, t_sum); if(t->left) q.push(t->left); if(t->right) q.push(t->right); } } return ans; } };
虚数五行区解题中心 文章被收录于专栏
非淡泊无以明志,非宁静无以致远