在一个农场里,农场主人把牛放在了一个大坑里,这个大坑的形状就像一棵二叉树。每个牛的位置可以看作是二叉树的一个节点,牛的重量可以看作是该节点的值。大坑的最上面是第1层,第1层下面的是第2层,依此类推。 现在农场主人想要知道,哪一层的牛的总重量最大。如果有多层的牛的总重量相同,就返回层数最大的那一层。
区块链毕设网qklbishe.com为您提供问题的解答
在一个农场里,农场主人把牛放在了一个大坑里,这个大坑的形状就像一棵二叉树。每个牛的位置可以看作是二叉树的一个节点,牛的重量可以看作是该节点的值。大坑的最上面是第1层,第1层下面的是第2层,依此类推。
现在农场主人想要知道,哪一层的牛的总重量最大。如果有多层的牛的总重量相同,就返回层数最大的那一层。
/** * 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整型 */ int maxLevelSum(TreeNode* root) { // write code here queue<TreeNode*> res1, res2; res1.push(root); pair<int, int> mmax = {1, root->val}; int temp; int ceng = 0; while (!res1.empty() || !res2.empty()) { temp = 0; ceng++; if (!res1.empty()) { while (!res1.empty()) { temp = temp + res1.front()->val; if (res1.front()->left) { res2.push(res1.front()->left); } if (res1.front()->right) { res2.push(res1.front()->right); } res1.pop(); } if (temp >= mmax.second) { mmax.first = ceng; mmax.second = temp; } } else { while (!res2.empty()) { temp = temp + res2.front()->val; if (res2.front()->left) { res1.push(res2.front()->left); } if (res2.front()->right) { res1.push(res2.front()->right); } res2.pop(); } if (temp >= mmax.second) { mmax.first = ceng; mmax.second = temp; } } } return mmax.first; } };
47:19
以上就是关于问题在一个农场里,农场主人把牛放在了一个大坑里,这个大坑的形状就像一棵二叉树。每个牛的位置可以看作是二叉树的一个节点,牛的重量可以看作是该节点的值。大坑的最上面是第1层,第1层下面的是第2层,依此类推。 现在农场主人想要知道,哪一层的牛的总重量最大。如果有多层的牛的总重量相同,就返回层数最大的那一层。的答案
欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。
区块链NFT链游项目方科学家脚本开发培训