JAVA - 打印节点+二叉搜索树的深度

问题描述

我正在尝试为我的二叉搜索树的每个节点打印所有值和深度。我在想出一种递归计算深度的方法时遇到了麻烦。到目前为止,我有一种仅打印树的每个值的方法。我希望得到一些指导,因为我觉得我让它变得比它应该的更难。

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 中构建用于测试的树。