java 二叉树的高度_java – 二叉树的高度

博客介绍了用递归方式计算二叉树高度的代码,通过递归计算左子树和右子树高度并取最大值,当前节点使子树高度加1。还提到用BFS计算高度的想法,指出DFS和BFS在运行时无差异,但BFS用O(N)内存,DFS用O(logN)内存,且BFS更复杂。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

if (node == null)

{

return 0;

}

叶节点的子节点为空。因此,这就是说,一旦我们过了叶子,没有更多的节点。

如果我们不经过叶节点,我们必须计算高度,并且这个代码这样递归。

return 1 +

当前节点将当前正在计算的子树的高度增加1。

Math.max(heightOfBinaryTree(node.left),

heightOfBinaryTree(node.right));

我们递归地计算左子树(node.left)和右子树(node.right)的高度。由于我们计算最大深度,我们取这两个深度的最大值。

我上面显示了递归函数是正确的。因此调用父节点上的函数将计算整个树的深度。

这里是从this document的树的高度的图形表示.h是树的高度,hl和hr分别是左和右子树的高度。

Moreover, I thought of just doing a

BFS with the root of the binary tree

as the argument to get the height of

the binary tree. Is the previous

approach better than mine?Why?

您提供的代码是DFS的一种形式。由于您必须处理所有节点以找到树的高度,所以DFS和BFS之间没有运行时差异,尽管BFS将使用O(N)内存,而DFS将使用O(logN)内存。 BFS也稍微复杂一些,因为它需要一个队列,而DFS使用“内置”递归堆栈。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值