C++ 根据层序遍历数组 构造二叉树
说明
该层序遍历数组中空节点会使用-1代替,即该层序遍历数组可以理解为一个完全二叉树
代码
利用队列实现左右子节点的存储,每次通过获取队列头部元素即为当前头节点,然后在数组中i和i+1对应该头结点下的左右子节点,如果不为-1,那么说明可以入队。
struct TreeNode
{
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x): val(x),left(nullptr),right(nullptr){}
};
TreeNode* BuildTree(vector<int>& tree)
{
if(tree.empty()) return nullptr;
TreeNode* root = new TreeNode(tree[0]);
queue<TreeNode*> q
q.push(root);
int next = 1;
while(next < tree.size())
{
TreeNode* cur = q.front();
q.pop();
if(next < tree.size() && tree[next] != -1)
{
cur->left = new TreeNode(tree[next]);
q.push(cur->left);
}
next++;
if(next < tree.size() && tree[next] != -1)
{
cur->right = new TreeNode(tree[next]);
q.push(cur->right);
}
next++;
}
return root;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律