作者 DS课程组
单位 临沂大学
本题要求实现一个函数,可返回二叉树的深度。
函数接口定义:
int Depth(BiTree T);
T是二叉树树根指针,函数Depth返回二叉树的深度,若树为空,返回0。
裁判测试程序样例:
#include <stdio.h>
#include <stdlib.h>typedef char ElemType;
typedef struct BiTNode
{ElemType data;struct BiTNode *lchild, *rchild;
}BiTNode, *BiTree;BiTree Create();/* 细节在此不表 */int Depth(BiTree T);int main()
{BiTree T = Create();printf("%d\n", Depth(T));return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
输入为由字母和'#'组成的字符串,代表二叉树的扩展先序序列。例如对于如下二叉树,输入数据:
AB#DF##G##C##
输出样例(对于图中给出的树):
4
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
C程序如下:
int Depth(BiTree T) {// 如果当前节点为空,则树的深度为0if (T == NULL) {return 0;}// 递归计算左子树的深度int left = Depth(T->lchild);// 递归计算右子树的深度int right = Depth(T->rchild);// 比较左右子树的深度,返回较大值加1作为当前树的深度if (left > right) {return ++left; // 左子树深度较大,返回左子树深度加1} else {return ++right; // 右子树深度较大或相等,返回右子树深度加1}
}