二叉树求深度解析

小白博客
看下图为示例
在这里插入图片描述
先贴出求深度代码
int Depth(Bitree root) {

int hl,hr,max;
if(root) {
    hl = Depth(root->left);
    hr = Depth(root->right);
    max = hl>hr?hl:hr;
    printf("%c:Depth->%d\n",root->data,max+1);
    return (max+1);
}
else return 0;

}
//先会一直执行h1 = Depth(root->left);(注意:root也在改变)
//直到D->left = NULL 返回0,这是最后一层hl = 0;
//继续指行hr = Depth(root->right);(注意:还是最后一层,root=D)
//同理最后一层hr = 0,执行max = …返回1,(D单独的深度为1)。
//返回上一层(回溯),回到B的一层,此时B层的hl = 1,(上一步返回的)
//执行hr = Depth(root->right)(root=B)进入下一层F
//递归调用,F->left不为空,继续下一层E,E左右为空,同理上述D
//回溯,F层的hl = 1,hr = 0,调用max=…得到B层的hr=2
//然后调用第一层的A->right,同上步骤,最终得到深度为4在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43185391/article/details/85036446