📅  最后修改于: 2023-12-03 15:10:09.356000             🧑  作者: Mango
二叉树是一种重要的数据结构,它可以用于很多场合,如搜索、排序等。按级别顺序插入二叉树是一种常见的操作,它可以保证二叉树的平衡性,便于后续的操作。
按级别顺序插入二叉树的算法可以描述为:
按级别顺序插入二叉树的核心在于如何找到一个空节点。为了实现这个功能,我们可以使用队列来辅助实现。具体实现如下:
class TreeNode {
public:
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
void Insert(TreeNode* root, int val) {
TreeNode* node = new TreeNode(val);
if (root == nullptr) {
root = node;
return;
}
queue<TreeNode*> q;
q.push(root);
while (!q.empty()) {
TreeNode* cur = q.front();
q.pop();
if (cur->left == nullptr) {
cur->left = node;
return;
} else {
q.push(cur->left);
}
if (cur->right == nullptr) {
cur->right = node;
return;
} else {
q.push(cur->right);
}
}
}
在这段代码中,我们首先新建一个节点,并将数据插入其中。如果二叉树为空,则将此节点作为根节点。否则,我们使用队列来逐层遍历二叉树。我们从队列中取出一个节点cur,如果cur的左右子节点都不为空,我们就将它们加入队列中。否则,我们将node插入到cur的左右子节点中,然后退出循环。如果一直没有找到空节点,则说明插入失败。