否则,就是左子树与右子树的最大深度加上1
如图就是左子树的B的深度与右子树C的深度相比较,其中的最大值加上A本身的高度1
#include <stdio.h>#include <stdlib.h>
typedef struct node
{
char data
struct node *left,*right
}Node,*PNode
PNode createBtree(PNode root)//创建二叉树,控制台下输入,基于先序遍历输入
{
char data
scanf("%c",&data)
if (data==' ')
{
root=NULL
return root
}
root = (PNode)malloc(sizeof(Node))
root->data = data
root->left = createBtree(root->left)
root->right = createBtree(root->right)
return root
}
int depth(PNode root)//这就是你要的函数。
{
int ld,rd
if (root==NULL)
{
return 0
}
ld = 1+depth(root->left)
rd = 1+depth(root->right)
return ld>rd?ld:rd
}
int main()
{
PNode root=NULL
root = createBtree(root)
printf("%d",depth(root))
return 0
}
为了测试,写了二叉树的建立程序;
如下输入可以看到结果
虚节点用空格输入的。例如你输入
先序遍历
234空格空格5空格6空格空格7空格空格回车就可以看到结果。
另外,本算法是从1开始算深度的,就是根节点是深度下。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)