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

ACM模式手动构建二叉树

ACM模式手动构建二叉树

给一个vector<string>,数组每个元素表示二叉树节点的val,如果元素为"N"则为空节点,构建二叉树

/*
#include <iostream>
#include <vector>
#include <queue>
#include <string>
using namespace std;
*/
// 笔试用通用库代替以上库方便
#include <bits/stdc++.h>// 定义二叉树节点结构
struct TreeNode {int val;TreeNode* left;TreeNode* right;TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};// 构建二叉树函数
TreeNode* buildTree(const vector<string>& data) {if (data.empty() || data[0] == "N") return nullptr;TreeNode* root = new TreeNode(stoi(data[0]));queue<TreeNode*> que;que.push(root);int i = 1;while (!que.empty() && i < data.size()) {TreeNode* cur = que.front();que.pop();// 左子节点if (i < data.size() && data[i] != "N") {cur->left = new TreeNode(stoi(data[i]));que.push(cur->left);}i++;// 右子节点if (i < data.size() && data[i] != "N") {cur->right = new TreeNode(stoi(data[i]));que.push(cur->right);}i++;}return root;
}// 示例测试
int main() {vector<string> data = {"1", "2", "3", "N", "4", "5", "N"};TreeNode* root = buildTree(data);return 0;
}
http://www.xdnf.cn/news/397639.html

相关文章:

  • 算法导论第9章思考题
  • 深入理解深度循环神经网络(Deep RNN)
  • Beta分布--贝叶斯建模概率或比例常用分布
  • eNsp的使用
  • 数据结构【二叉树的遍历实现】
  • 免费公共DNS服务器推荐
  • 如何读论文【论文精读】
  • opencascade.js stp vite webpack 调试笔记
  • C++ STL编程 vector空间预留、vector高效删除、vector数据排序、vector代码练习
  • 风扇接口
  • 自制PowerPoint荧光笔插件指南
  • 集合(超详细)
  • 【人工智能】DeepSeek的崛起-下一代AI模型的秘密武器
  • 微调自qwen3的无审查大模型(需谨慎使用):Josiefied-Qwen3-8B-abliterated-v1
  • LeetCode 热题 100 101. 对称二叉树
  • 单链表C语言实现(付代码全)
  • 进程检测与控制
  • C++学习之STL学习
  • 联合类型的逻辑或关系与类型保护
  • 关于我在实现用户头像更换时遇到的图片上传和保存的问题
  • Colab使用_文件操作
  • C++.IP协议通信
  • 【C++进阶】第3课—二叉搜索树
  • C++猴子摘桃 2024年信息素养大赛复赛 C++小学/初中组 算法创意实践挑战赛 真题详细解析
  • [超详细,推荐!!!]前端性能优化策略详解
  • VC++ 获取CPU信息的两种方法
  • POSIX信号量
  • 【软件测试】基于项目驱动的功能测试报告(持续更新)
  • k8s中ingress-nginx介绍
  • Spring Boot 中的重试机制