1、二叉树元素、二叉树结点、二叉树指针、栈元素、顺序栈等类型定义;
#include <stdio.h>
#include <stdlib.h>
#include<malloc.h>
#define OK 1
#define ERROR 0
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define MAXSIZE 100
typedef int Status;
typedef char datatype;
int count0 = 0;
/*定义二叉树的数据结构*/
typedef struct BiTreeNode
{
datatype data;
struct BiTreeNode *left;
struct BiTreeNode *right;
}BiTreeNode,*BiTree;
typedef BiTree SElemType;
//定义栈
struct SqStack
{
SElemType *base;
SElemType *top;
int stacksize;
};
2、创建二叉链表算法;
/**二叉树的建立--按照先序方式建立--插入**/
void CreateBiTree(BiTree &T)
{
char val;
scanf("%c",&val);
if(val == '#')
T = NULL;
else
{
T = (BiTree)malloc(sizeof(BiTreeNode));
T->data = val;
CreateBiTree(T->left);
CreateBiTree(T->right);
}
}
3、输出二叉树结点数函数;(与10相同)
/* 计算度为0的结点*/
void CountNode0(BiTree T)
{
if(T