当前位置: 首页 > article >正文

【leetcode】LCR150.彩灯装饰记录Ⅲ

c++实现

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    using TreeNodeBool = pair<TreeNode*, bool>;

    vector<vector<int>> decorateRecord(TreeNode* root) 
    {
        vector<vector<int>> ans;
        if(root==nullptr) return ans;

        queue<vector<TreeNodeBool>> nodeVecs;
        vector<TreeNodeBool> nodevec{{root,true}}; 
        nodeVecs.push(nodevec);
        while (nodeVecs.empty()==false)
        {
            vector<TreeNodeBool> curNodeVec = nodeVecs.front();
            cout<<"curNodeVec.size="<<curNodeVec.size()<<endl;
            nodeVecs.pop();
            vector<int> ans_vec; // 当前结点的值
            vector<TreeNodeBool> childNodes; // 当前结点的子结点
            for(auto curNode : curNodeVec)
            {
                ans_vec.emplace_back(curNode.first->val);
                if(curNode.first->left!=nullptr)
                {
                    TreeNodeBool left{curNode.first->left, !curNode.second};
                    childNodes.emplace_back(left);
                }
                if(curNode.first->right!=nullptr)
                { 
                    TreeNodeBool right{curNode.first->right, !curNode.second};
                    childNodes.emplace_back(right);
                }
            }            
            if(curNodeVec[0].second==false && ans_vec.size()>0)
            {
                vector<int> ans_vec2;
                for(auto it = ans_vec.rbegin(); it<ans_vec.rend(); ++it)
                {
                    ans_vec2.emplace_back(*it);
                }
                ans.emplace_back(ans_vec2); 
            }
            else if(ans_vec.size()>0) ans.emplace_back(ans_vec);    
            
            if(childNodes.size()>0) nodeVecs.push(childNodes);                   
        }
        return ans;
    }
};

http://www.kler.cn/a/402221.html

相关文章:

  • Flink是如何实现 End-To-End Exactly-once的?
  • React|bpmn.js|react-bpmn使用示例详解
  • macOS 的目录结构
  • 【leetcode 02】27. 移除元素
  • 基于Java Springboot网上花卉购物系统
  • 基于yolov8、yolov5的行人检测识别系统(含UI界面、训练好的模型、Python代码、数据集)
  • Windsurf:超越 Cursor 的下一代 AI 编程助手
  • 使用C#编写一个控制台应用程序,实现文件的复制功能。
  • 软件工程9、10章小测
  • JavaScript 中,.call()的使用详解
  • Android U 多任务启动分屏——SystemUI流程(更新中)
  • perf使用方法
  • .NET 9 运行时中的新增功能
  • go语言中的切片含义和用法详解
  • (计算机毕设)基于SpringBoot+Vue的房屋租赁系统的设计与实现
  • 共享门店模式:创新零售的新篇章
  • 11.18 Maven-SpringBootWeb入门
  • Spring Boot图书馆管理系统:疫情中的技术实现
  • R环境依赖的备份与恢复全攻略
  • 【PHP小课堂】一起学习PHP中的反射(三)
  • selenium元素定位校验以及遇到的元素操作问题记录
  • OpenAI Adjusts Strategy as ‘GPT’ AI Progress Slow
  • 将大模型生成数据存入Excel,并用增量的方式存入Excel
  • Linux全局替换配置文件的IP
  • 【PyTorch][chapter 28] 揭秘 Transformer:缩放定律指南
  • 第十五章 Spring之假如让你来写AOP——Joinpoint(连接点)篇