树与二叉树
定义:
typedef int TElemType;
typedef struct BitTree
{
TElemType data;
struct BitNode *lchild,*child;
}BitNode,BitTree;shen
递归求树深:
**思路:弱国树空则深度为0,否则,先计算出左子树的深度,在计算出
右子树的深度,最后,树的深度为左右子树深度的最大数值加1
int TreeDepth(BitTree T)
{
int d;
if(T==NULL) d=0;
else
{
d1=TreeDepth(T->lchild);
d2=TreeDepth(T->rchild);
if(d1>d2) d=d1+1;
else d=d2+1;
}
return d;
}
先序创建二叉树
规则:若输入为0则创建一个空树,停止。否则创建根结点,递归创建
左子树,递归创建右子树。eg:0120300400
typedef int TElemType;
Status CreatBitTrree(BitTree T)
{
TElemType e;
scanf("%d",&e);
if(e==0) T=NULL;
else{
T=(BitTree*)malloc(sizeof(BitTree));
if(!T)
exit(OVERFLOW);
T->data = e;
CreatBitTree(T->lchild);
CreatBitTree(T->rchild);
}
return OK;
}
定义:
typedef int TElemType;
typedef struct BitTree
{
TElemType data;
struct BitNode *lchild,*child;
}BitNode,BitTree;shen
递归求树深:
**思路:弱国树空则深度为0,否则,先计算出左子树的深度,在计算出
右子树的深度,最后,树的深度为左右子树深度的最大数值加1
int TreeDepth(BitTree T)
{
int d;
if(T==NULL) d=0;
else
{
d1=TreeDepth(T->lchild);
d2=TreeDepth(T->rchild);
if(d1>d2) d=d1+1;
else d=d2+1;
}
return d;
}
先序创建二叉树
规则:若输入为0则创建一个空树,停止。否则创建根结点,递归创建
左子树,递归创建右子树。eg:0120300400
typedef int TElemType;
Status CreatBitTrree(BitTree T)
{
TElemType e;
scanf("%d",&e);
if(e==0) T=NULL;
else{
T=(BitTree*)malloc(sizeof(BitTree));
if(!T)
exit(OVERFLOW);
T->data = e;
CreatBitTree(T->lchild);
CreatBitTree(T->rchild);
}
return OK;
}