试编写程序:
(1) 建立下面这样一棵二叉树
(2) 后序遍历这棵二叉树
(3) 按层次遍历
(4) 求叶子数和深度。
(5) 查找値为‘H’的结点,如存在,则打印出’H’的所有祖先。
以下是代码以及注释,最后配有截图
#include <stdio.h>
#include <stdlib.h>
typedef struct bnode{
char data;
struct bnode *lchild,*rchild,*parent;
}Bnode,*BTree;
typedef struct node{
BTree qdata;
struct node*next;
}Qnode,*PQNode; /*链队结点*/
typedef struct {
PQNode front,rear;
}LinkQueue,*PLinkQueue; /*将头尾指针封装在一起的链队*/
PLinkQueue Init_LinkQueue() /*初始化一新队列,返回结点指针*/
{
PLinkQueue Q;
Q=(PLinkQueue)malloc(sizeof(LinkQueue));
if(Q)
{ Q->front=NULL;
Q->rear=NULL;
}
return Q;
}
int Empty_LinkQueue(PLinkQueue Q) /*判断队列是否为空,输出 1 为空,0 为非空*/
{
if(Q&&Q->front==NULL&Q->rear==NULL)