利用完全二叉树的性质建立一棵二叉树

来源:百度知道 编辑:UC知道 时间:2024/05/29 14:15:43
实现先序、中序、后序遍历递归和非递归算法、求二叉树的深度、求双孩子结点个数、单孩子结点个数,统计二叉树的叶子结点的个数。最好总体设计应画一流程图

数据结构实验------二叉树操作2008-12-04 19:07按层次输入,这样可以根据实际需要建立树型,更为实用。但我的程序仍存在一个问题,就是遍历(2):输出为空的孩子时都会多输出两个空孩子。不知道怎么改。

//二叉树结点类型为字符型的情况
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define null 0
#define MaxSize 1024
typedef struct tree
{ /*声明树的结构*/
struct tree *left; /*存放左子树的指针*/
struct tree *right; /*存放又子树的指针*/
char data; /*存放节点的内容*/
} treenode, * b_tree; /*声明二叉树的链表*/

b_tree Q[MaxSize];

/*建立二叉树,按完全二叉树的层次遍历序列输入*/
b_tree createbtree()
{
char ch;
int front,rear;
b_tree root,s;
root=NULL;
front=1;rear=0;
ch=getchar();
getchar();
while(ch!='?')
{
s=NULL;
if(ch!='.')
{
s=(b_tree)malloc(sizeof(treenode));
s->data=ch;
s->left=NULL;
s->right=NULL;
}
rear++;
Q[rear]=s;
if(rear==1)
root=s;
else
{