#include<stdio.h> #include<stdlib.h> typedef struct btreenode { int data; struct bnode *lc; struct bnode *rc; }bnode; int creat(bnode **proot) { bnode *p,*q; int k,n,i; *proot=NULL;//初始化空树 printf("输入二叉树的节点元素个数n:");//输入数据元素个数 scanf("%d",&n); printf("输入二叉树:"); for(i=0;i<n;i++) { p=(bnode *)malloc(sizeof(bnode)); /*if(p == NULL) {//检查分配内存是否成功 printf("树满\n"); exit(1);}*/ p->lc=NULL; p->rc=NULL; scanf("%d",&k); p->data=k; if(*proot=NULL) *proot=p; else {q=*proot; while(q!=NULL) {if(q->data>k) if(q->lc!=NULL) q=q->lc; else {q->lc=p; q=NULL; } else if(q->rc!=NULL) q=q->rc; else {q->rc=p; q=NULL; } } } } } void preorder(bnode *bt)//递归先序遍历 { if(bt==NULL) {return ; } printf("ggggg"); preorder(bt->lc); preorder(bt->rc); } void inorder(bnode *bt) { if(bt==NULL) { return;} else { if(bt->lc!=NULL) inorder(bt->lc); printf("%d",bt->data); if(bt->rc!=NULL) inorder(bt->rc); } printf("%d",bt->data); } int main() { bnode *bt; bt=NULL; creat(&bt); printf("先序遍历结果:"); preorder(bt); printf("\n"); printf("中序遍历结果:"); inorder(bt); printf("\n"); return 0; }
时间: 2024-03-28 15:38:54 浏览: 13
这段代码是一个二叉树的创建和遍历程序,包括先序遍历和中序遍历。
在程序中,结构体 `btreenode` 表示二叉树节点,包括节点值 `data` 和左右子节点指针 `lc` 和 `rc`。
函数 `creat` 的作用是创建二叉树,参数 `proot` 是一个二级指针,表示二叉树根节点的地址。函数首先将根节点指针设置为 `NULL`,然后输入二叉树节点元素个数 `n` 和节点元素值,依次将节点插入二叉树中。
函数 `preorder` 和 `inorder` 分别是二叉树的先序遍历和中序遍历函数。其中 `preorder` 是递归函数,先输出当前节点值,然后递归遍历左右子树;`inorder` 同样是递归函数,但先遍历左子树,再输出当前节点值,最后遍历右子树。
在 `main` 函数中,首先定义一个二叉树指针 `bt`,然后调用 `creat` 函数创建二叉树,最后分别调用 `preorder` 和 `inorder` 函数进行先序遍历和中序遍历。
相关问题
#include <stdio.h> #include <stdlib.h> typedef int ElemType; typedef struct LNode { ElemType da
`#include <stdio.h>`和`#include <stdlib.h>`是C语言中的两个头文件。`<stdio.h>`是标准输入输出头文件,提供了一些用于输入输出的函数和宏定义。`<stdlib.h>`是标准库头文件,提供了一些常用的函数和宏定义,如内存分配、随机数生成等。
在你的代码中,`typedef int ElemType;`定义了一个类型别名,将`int`类型命名为`ElemType`。
`typedef struct LNode`定义了一个结构体类型`LNode`,结构体是一种自定义的数据类型,可以包含多个不同类型的成员变量。在这里,`LNode`结构体中的成员变量还没有完整定义,因此代码截断了。
#include <stdio.h> #include <stdlib.h> #define MAXSIZE 100 typedef int ElemType; typedef struct
这段代码是C语言中的头文件引用和一些定义的示例。其中,`#include <stdio.h>`和`#include <stdlib.h>`是用来引入标准库函数的头文件。`stdio.h`包含了输入输出相关的函数,如`printf`和`scanf`;`stdlib.h`包含了一些常用的函数,如内存分配函数`malloc`和随机数生成函数`rand`。
`#define MAXSIZE 100`是一个宏定义,用来定义一个常量`MAXSIZE`,它的值为100。
`typedef int ElemType;`是用来给`int`类型起一个别名`ElemType`,方便在代码中使用。
至于代码中的结构体部分,由于你没有提供完整的代码,所以无法给出具体的解释。但一般来说,结构体用于定义一种自定义的数据类型,可以包含多个不同类型的成员变量。