首页 > 解决方案 > JAVA - 打印节点+二叉搜索树的深度

问题描述

我试图为我的二叉搜索树的每个节点打印所有值和深度。我无法想出一种递归计算深度的方法。到目前为止,我有一种只打印树的每个值的方法。我会很感激一些指导,因为我觉得我让它变得比应该的更难。

public void printTree( )
    {
        if( isEmpty( ) )
            System.out.println( "Empty tree" );
        else
            printTree( root );
    }

标签: javadata-structuresbinary-search-tree

解决方案


我没有看到任何用于打印树的代码,但除此之外,打印功能也不完整。要打印整棵树,您可以依赖任何树遍历算法。这是返回深度并按预定顺序打印树的示例代码。

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;
}

}

您可能需要构建树以在单独的函数或内部进行测试。


推荐阅读