发布网友
共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");
}
}
}
}
热心网友
建议你画图边看边画一边遍就明白