层序次序创建二叉树,用C语言实现
时间: 2023-02-05 16:38:05 浏览: 87
层序次序创建二叉树是指按照二叉树的层序遍历的顺序依次输入二叉树的节点,用一个队列来实现。
首先,创建一个二叉树的结构体,其中包含一个指向左儿子的指针和一个指向右儿子的指针:
struct BinaryTreeNode {
int value;
BinaryTreeNode* left;
BinaryTreeNode* right;
};
然后,定义一个函数来创建二叉树,其中传入的参数是一个数组和数组的长度:
BinaryTreeNode* createBinaryTree(int values[], int length) {
if (length <= 0) return nullptr;
// 创建根节点
BinaryTreeNode* root = new BinaryTreeNode;
root->value = values[0];
root->left = nullptr;
root->right = nullptr;
// 创建队列并将根节点加入
std::queue<BinaryTreeNode*> nodes;
nodes.push(root);
// 遍历数组中的其他节点
for (int i = 1; i < length; i++) {
// 取出队列头部节点
BinaryTreeNode* current = nodes.front();
nodes.pop();
// 判断当前节点是否有左儿子
if (current->left == nullptr) {
// 创建左儿子
current->left = new BinaryTreeNode;
current->left->value = values[i];
current->left->left = nullptr;
current->left->right = nullptr;
// 将左儿子加入队列
nodes.push(current->left);
} else {
// 创建右儿子
current->right = new BinaryTreeNode;
current->right->value = values[i];
current->right->left = nullptr;
current->right->right = nullptr;
// 将右儿子加入队列
nodes.push(current->right);
}
}
return root;
}
最后,
阅读全文