红酒网络营销策划方案长沙seo网站推广
步骤:
-
初始化一个队列用于BFS,如果根节点存在则加入队列。
-
当队列不为空时:
-
获取当前层的节点数量。
-
初始化一个变量来记录当前层的最大值。
-
处理当前层的每个节点:
-
如果当前节点的值大于当前最大值,则更新最大值。
-
如果当前节点有左子节点或右子节点,将它们加入队列。
-
-
处理完当前层所有节点后,将最大值加入结果列表。
-
-
返回结果列表。
class Solution {
public:vector<int> largestValues(TreeNode* root) {vector<int> res; queue<TreeNode*> q;if(root == nullptr) return res;q.push(root);while(!q.empty()){int size = q.size();TreeNode* cur;int num = INT_MIN;for(int i = 0; i < size; i++){cur = q.front();q.pop();if(cur->val > num) num = cur->val;if(cur->left) q.push(cur->left);if(cur->right) q.push(cur->right);}res.push_back(num);}return res;}
};
递归:
class Solution {
private:void traverse(TreeNode* cur, int level, vector<int>& res){if(cur == nullptr) return;if(level >= res.size()){res.push_back(cur->val);}else{res[level] = max(res[level], cur->val);}if(cur->left) traverse(cur->left, level + 1, res);if(cur->right) traverse(cur->right, level + 1, res);}
public:vector<int> largestValues(TreeNode* root) {vector<int> res;traverse(root, 0, res);return res;}
};