是我的递归的条件正确计算二叉树的高度是多少?

我想知道我的代码是否是对还是错在你们的帮助,因为我黯然不能运行它来检查。

有没有编译错误。 我正在试图做的是找到一个二叉树的高度 。 树不必是平衡的,当然。

在二叉树的每个节点可以有两个节点作为孩子

public int height(RBNode t) { if (t == null) return 0; int heightLeft = height(t.left); int heightRight = height(t.right); if (heightLeft > heightRight) { return heightLeft + 1; } else { return (heightRight + 1); } }

你认为递归的条件是正确的? 我的朋友声称,它总是返回0。

--------------解决方案-------------

真的紧凑型:

public int height(RBNode t) {
if (t == null) {
return 0;
}
return Math.max(height(t.left), height(t.right)) + 1;
}

看起来好像没什么问题,但我个人改变最后一位:

return Math.max(heightLeft, heightRight) + 1;

我担心你不能运行在所有的,虽然......你为什么不能写解决这个单元测试? 我会紧张的任何代码我无法测试:)

乍看之下,只要你在树头传递,它会返回正确的值。 但它应该是很容易建立一个测试来验证此...

在问题的代码,是我们没有得到高度+1? 的高度被定义为“从根到树中的最深的节点的路径的长度。 A(扎根)树只有一个节点(根)为零的深度“。(维基百科)

如果有问题的代码,如果给根树只有1个节点,它会给高度1,这应该是INFACT 0 ..

请纠正我,如果我错了地方..

分类:java的 时间:2015-03-14 人气:0
本文关键词: Java中,递归
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.049 (s). 10 q(s)