java - 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;
}
}
您可能需要构建树以在单独的函数或内部进行测试。
推荐阅读
- google-analytics - 在 Google Analytics 中添加推荐链接的附加信息
- python - 有没有办法在opencv python中获得两个单独轮廓的边界矩形的4个坐标点?
- python - 在两个轴上绘制 matplotlib 中的误差线
- node.js - Jest/SuperTest Express 集成测试 - 发送后无法设置标题。(当您在多个测试中调用同一个端点时)
- javascript - 如何使用 JS 对 dygraph 中的日期进行降序排序?
- ios - 如何在一个部分中组合相同的日期对象?
- azure - Azure 应用服务未将 Gitlab 容器注册表配置作为私有存储库
- ajax - Magento 2.2 Ajax 在类别页面中第二次无法正常工作
- excel - SQLite3 ODBC 驱动程序 - Access / Excel 逗号而不是点
- android - JobIntentService 不适用于 Oreo 以下的 API (API <= 26)