#include<stdio.h> #include <stdlib.h> typedef float ElemType; typedef struct S_BiTNode//定义结点类型结构体 { ElemType data;//数据域 struct S_BiTNode * lchild;//左子树 struct S_BiTNode * rchild;//右子树 struct S_BiTNode * parent;//父结点 }BiTNode; /***********************函数定义函数定义定*****************************/ // /**统计总结点数**/ int NodeCount(BiTNode *root) { int Count=0,LCount=0,RCount=0; if(root==NULL) return 0; /*递归方法统计*/ LCount=NodeCount(root->lchild);//左子树结点数 RCount=NodeCount(root->rchild);//右子树结点数 Count=LCount+RCount+1;//左子树+右子树+根结点 return Count; } // /**向二叉树中插入结点**/ void InsertIntoBitTree(BiTNode **root,ElemType data) { /*创建新结点保存待插入的data*/ BiTNode *newNode=(BiTNode*)malloc(sizeof(BiTNode)); newNode->data=data; newNode->lchild=NULL; newNode->rchild=NULL; //考虑到 当输入是空树时 需要改变根结点(BiTNode *root)的值,所以这里要求输入根节点的地址(BiTNode **root类型) if(*root==NULL)//说明是空树 { *root=newNode;//将新结点的指针newNode赋值给根结点的指针 (*root)->parent=NULL; (*root)->lchild=NULL; (*root)->rchild=NULL; } else if((*root)->lchild==NULL) { /*左子树为空 则将新结点n
用C语言实现二叉树的结构和常用操作
最新推荐文章于 2024-03-15 09:00:00 发布