#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef struct BiTNode
{
char str;
struct BiTNode *lchild, *rchild;
}BiTNode, *BiTree;
void createBiTree(BiTree *T)
{
char ch;
scanf("%c", &ch);
if (ch == '#')
{
*T = NULL;
}
else
{
*T = (BiTree)malloc(sizeof(BiTree));
if (!*T)
exit(-1);
(*T)->str = ch;
createBiTree(&((*T)->lchild));
createBiTree(&((*T)->rchild));
}
}
int treeDepth(BiTree *T)
{
if (!(*T))
return 0;
int leftTreeDepth = treeDepth(&(*T)->lchild);
int rightTreeDepth = treeDepth(&(*T)->rchild);
if (leftTreeDepth == 0)
return (rightTreeDepth + 1);
else if(rightTreeDepth == 0)
return (leftTreeDepth + 1);
else
return (leftTreeDepth > rightTreeDepth)? leftTreeDepth+1:rightTreeDepth+1;
}
int main()
{
BiTree T;
createBiTree(&T);
int depth = treeDepth(&T);
printf("%d", depth);
}
求二叉树的深度
最新推荐文章于 2021-04-27 03:26:48 发布