问题描述
我正在尝试为我的二叉搜索树的每个节点打印所有值和深度。我在想出一种递归计算深度的方法时遇到了麻烦。到目前为止,我有一种仅打印树的每个值的方法。我希望得到一些指导,因为我觉得我让它变得比它应该的更难。
public void printTree( )
{
if( isEmpty( ) )
System.out.println( "Empty tree" );
else
printTree( root );
}
解决方法
我没有看到任何打印树的代码,但除此之外打印功能也不完整。 要打印整棵树,您可以依赖任何树遍历算法。 以下是返回深度并按预定顺序打印树的示例代码。
public static void printTree(Node r) {
if( r==null )
return;
System.out.println(r.value);
printTree(r.left);
printTree(r.right);
}
public static int findDepth (Node r) {
if(r==null)
return 0;
return (max(findDepth(r.left),findDepth(r.right))+1);
}
这是基于假设 Node 类定义如下。
class Node {
int value;
Node left;
Node right;
Node(int value) {
this.value = value;
right = null;
left = null;
}
}
您可能需要在单独的函数或 main 中构建用于测试的树。