用C语言实现了二叉树的初始化,循环队列与顺序栈的建立。
利用递归与非递归方式实现前序遍历、中序遍历、后序遍历。
利用队列实现了层次遍历。
求得了二叉树带权路径长度
#include<stdio.h>
#include<stdlib.h>
#define Maxsize 20
typedef struct BitNode
{
/* data */
int data;
struct BitNode *lchild,*rchild;
}BitNode;
typedef struct Stack{ //栈及相关操作
BitNode *data[Maxsize];
int top;
}Stack;
Stack * initStack(){
Stack *s = (Stack *)malloc(sizeof(Stack));
s->top=0;
return s;
}
int isStackEmpty(Stack *p){
if(p->top==0){
return 1;
}
return -1;
}
int pushStack(Stack *p,BitNode *node){
if(p->top+1>Maxsize){
printf("full error,please enlarge Maxsize\n");
return -1;
}
p->data[p->top]=node;
p->top++;
return 1;
}
BitNode* popStack(Stack *p){
if(p->top==0){
return NULL;
}
BitNode * temp = p->data[p->top-1