c语言怎么构建二叉?
c语言怎么构建二叉树
#include#includetypedef struct BiTreeNode{int data;struct BiTreeNode *lchild,*rchild; //左右孩子指针}BiTNode,*BiTree;int main(){BiTree CreateBiTree();void previsit(BiTree T);BiTree BT=CreateBiTree();puts("OK@!");previsit(BT); putchar('\n');return 0;}//BiTNode *lchilde ,*rchilde;BiTree CreateBiTree(){//按先后顺序输入儿茶书中的节点值,*字符表示空 输入时按层次遍历输入//构造二叉链表示的二叉树char ch;BiTree T;scanf("%c",&ch);if(ch=='*')T=NULL;else{T=(BiTNode*)malloc(sizeof(BiTNode));if(!T)return(0);T->data=ch; //生成根节点 T->lchild=CreateBiTree(); //构造左子树T->rchild=CreateBiTree(); //构造右子树}return T;} //CreatBiTreevoid previsit(BiTree T){//采用二叉树链表存储结构,visit 是对数据结构表元素操作的应用函数。
if(T){printf("%c ",T->data);previsit(T->lchild);previsit(T->rchild);}}以上是简单构造和先序遍历。
C语言中二叉树的创建需要用到结构体来定义一个树的数据类型。树这个数据结构有一些数据域,和多个指针域。当然,对于二叉树而言,一般可以定义两个指针域,分别指向root节点的左右子节点。数据结构定义: struct tree{ int data; //这里数据域以此为例 tree*right,*left;}; 真正构建二叉树可以使用动态内存申请,这是一种比较常见的方法(如果不会动态内存申请,可以先看看),但是这样做在子树很多时会耗费较多时间。 因此可以事先开辟好一段内存空间用于存储树。比如 tree T[2000];如果需要建立新的子树,那么只需将数组中某个左右子节点赋值即可。