首页 热点资讯 义务教育 高等教育 出国留学 考研考公

C语言创建二叉树 遍历 求深度 求解!!

发布网友

我来回答

2个回答

热心网友

如何建立二叉树,为了方便理解中递推法

案例1:
#Include <stdio.h>
#include <stdlib.h>

struct Data{
int num;
struct Data* left; // 左节点指针
struct Data* right; // 右节点指针
};
typedef struct Data Data;
// 创建节点
Data* create_node(int data){
Data *node = (Data*)malloc(sizeof(Data));
node->left = NULL;
node->right = NULL;
node->num = data;
return node;
};
// 给二叉树有序地插入节点
bool insert_node(Data *root, int data){
while(1){
if(data == root->num){
return false;
}
else if(data > root->num){ // 如果输入的数值 大于 当前根节点的数值,就插入当前根节点的右边
if(root->right == NULL){ // 如果当前根的右节点指针为空就插入
root->right = create_node(data);
return true;
}else{ // 如果当前根的右节点指针不为空就继续遍历下一个根
root = root->right;
}
}
esle if(data < root->num){
// 如果输入的数值 小于 当前根节点的数值, 就插入当前根节点的左端
if(root->left == NULL){ //如果当前根的左节点指针为空就插入
root->left = create_node(data);
return true;
}else{ // 如果当前根的左节点不为空,就继续变量下一个根
root = root->left;
}
}
}
}

int main(){
Data *root = NULL;
while(1){
int num;
printf("请输入数值:");
scanf("%d",&num);
if(num < 0)break; // 如果输入的是负数就退出循环

if(root == NULL){
root = create_node(num); // 创建父树根
}else{
if(!insert_node(root)){ // 向二叉树添加节点
printf("插入失败\n");
}
}
}
}

热心网友

建议你画图边看边画一边遍就明白

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com