一.主函数调用
a.我们使用数组存储二叉树中的所有结点,以前序遍历的方式存储(下面创建的时候就必须采用前序的方式创建二叉树,在数组中的存储方式必须和创建时的方式相同)空结点以#表示.在主函数中我们只需定义一个指针用来存储根节点就行,根据根节点我们便可以访问到二叉树中的所有结点.
//主函数
int main(){
BTDataType str[]="ABD##E#H##CF##G##";
int num=0;
int k=0;
char x,Empty;
BTNode* root;
root=CreateBinaryTree(str,strlen(str),&num);
printf("层序遍历为:");
BinaryTreeLevelOrder(root);
printf("结点个数为:%d\n",BinaryTreeSize(root));
printf("叶子结点个数为:%d\n",BinaryTreeLeafSize(root));
printf("请输入k=");
scanf("%d",&k);
printf("第%d层节点的个数为:%d\n",k,BinaryTreeLevelKSize(root,k));
Empty=getchar();
printf("请输入x=");
scanf("%c",&x);
printf("以%c为根的树中总共有%d个节点\n",x,BinaryTreeSize(BinaryTreeFind(root,x)));
printf("二叉树的深度为:%d\n",BinaryTreeDepth(root));
printf("%d\n",BinaryTreeComplete(root));
BinaryTreeDestory(&root);
return 0;
}
二.创建二叉树
a.首先是二叉树的建立我们采用的递归的方式进行二叉树的创建.
结构体类型:
typedef struct BinaryTreeNode{
BTDataType _data;//数据域
struct BinaryTreeNode* _left;//存储左孩子
struct BinaryTreeNode* _right;//存储右孩子
}BTNode;
采用前序遍历创建二叉树:
b.我们这里来看看三个参数,第一个参数为存储二叉树节点的数组,第二个参数为数组的长度,第三个参数用来判断