“二叉树深度”程序详细解释!!!

“二叉树深度”程序详细解释!!!,第1张

整个程序的意思就是如果是空二叉树,深度就是0

否则,就是左子树与右子树的最大深度加上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开始算深度的,就是根节点是深度下。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11055978.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存