#include <iostream>
#include <sstream>
#include <stack>
#include <vector>
#include <queue>
using namespace std;
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) {}
};
TreeNode* buildTree(vector<int>& nums){
vector<TreeNode*> vecTree(nums.size(), nullptr);
for(int i=0; i<nums.size(); i++){
if(nums[i] != -1){
vecTree[i] = new TreeNode(nums[i]);
}
}
for(int i=0; 2*i+1 < nums.size(); ++i){
if(vecTree[i] != nullptr){
vecTree[i]->left = vecTree[2*i+1];
if(2*i+2 < vecTree.size()){
vecTree[i]->right = vecTree[2*i+2];
}
}
}
return vecTree[0];
}
TreeNode* buildTreeDFS(const vector<int>& nums, int index){
if(index >= nums.size() || nums[index] == -1) return nullptr;
TreeNode* node = new TreeNode(nums[index]);
node->left = buildTreeDFS(nums, index*2 +1);
node->right = buildTreeDFS(nums, index*2 +2);
return node;
}
TreeNode* buildTreeQueue(vector<int>& nums){
queue<TreeNode*> que;
TreeNode* root=nullptr;
if(!nums.empty()) {
root = new TreeNode(nums[0]);
que.push(root);
}
int idx=0;
while(!que.empty()){
int len = que.size();
for(size_t i=0; i< len;++i){
auto cur = que.front();que.pop();
if(nums[idx] == -1) {
++idx;
continue;
}
cout << cur->val << " ";
if((idx*2+1 < nums.size()) && nums[idx*2+1] != -1){
cur->left = new TreeNode(nums[idx*2+1]);
que.push(cur->left);
}
if((idx*2+2 < nums.size()) && nums[idx*2+2] != -1){
cur->right = new TreeNode(nums[idx*2+2]);
que.push(cur->right);
}
++idx;
}
cout << endl;
}
return root;
}
void travesal(TreeNode* root){
queue<TreeNode*> que;
if(root) que.push(root);
while(!que.empty()){
int len = que.size();
for(size_t i=0; i< len;++i){
auto cur = que.front();que.pop();
cout << cur->val << " ";
if(cur->left) que.push(cur->left);
if(cur->right) que.push(cur->right);
}
cout << endl;
}
}
string deleteSpace(string s){
size_t l=0, r=0;
for(; r < s.size(); ++r){
if(s[r] != ' ') s[l++] = s[r];
}
return s.substr(0, l);
}
int main()
{
vector<int> nums{1,2,3,-1,4,5,-1,-1, -1, 6};
TreeNode* root = buildTreeDFS(nums,0);
travesal(root);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
2021-08-23 python opencv 两个图像相减取绝对值