非递归创建二叉树c语言
时间: 2023-11-23 20:06:15 浏览: 85
非递归遍历二叉树 C语言实现 源码
以下是C语言实现非递归创建二叉树的代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct tree{
int data;
struct tree * left;
struct tree * right;
}Bitree, *pBitree;
pBitree CreateTree(){
pBitree root = NULL, p = NULL;
int data;
scanf("%d", &data);
while (data != -1){
p = root;
pBitree node = (pBitree)malloc(sizeof(Bitree));
node->data = data;
node->left = NULL;
node->right = NULL;
if (root == NULL){
root = node;
}
else{
while (1){
if (data < p->data){
if (p->left == NULL){
p->left = node;
break;
}
else{
p = p->left;
}
}
else{
if (p->right == NULL){
p->right = node;
break;
}
else{
p = p->right;
}
}
}
}
scanf("%d", &data);
}
return root;
}
void Preorder(pBitree root){
if (root){
printf("%d\n", root->data);
Preorder(root->left);
Preorder(root->right);
}
else{
return;
}
}
int main(){
pBitree root = CreateTree();
Preorder(root);
return 0;
}
```
该代码中,CreateTree()函数用于创建二叉树,Preorder()函数用于先序遍历二叉树。在CreateTree()函数中,我们使用了一个while循环来读取用户输入的数据,并根据数据的大小来判断新节点应该插入到左子树还是右子树中。在插入新节点时,我们使用了一个while循环来找到新节点应该插入的位置。
阅读全文