Java中不使用队列的二叉树右视图

2024-04-04

HERE http://www.geeksforgeeks.org/print-right-view-binary-tree-2/是不使用队列的二叉树右视图的C++实现。当我尝试将其转换为 Java 时,它不起作用。这是我的Java代码:

(我认为很可能是因为我没有正确理解算法和 maxLevel 指针/引用的处理)

public static void rightView(TreeNode tNode){
    int maxLevel = 0;
    rViewUtil(tNode, 1,maxLevel);
}

public static void rViewUtil(TreeNode tNode, int level, int maxLevel){
    if(tNode==null)
        return;
    if(maxLevel < level){
        System.out.print(tNode.value + " ");
        maxLevel = level;
    }
    rViewUtil(tNode.right, level+1, maxLevel);
    rViewUtil(tNode.left, level+1, maxLevel);
}

本着@lifus答案的精神,但避免可变状态,您可以使用函数 return 来设置maxLevel

public static void rightView(TreeNode tNode){
    int maxLevel = 0;
    rViewUtil(tNode, 1,maxLevel);
}

public static int rViewUtil(TreeNode tNode, int level, int maxLevel){
    if(tNode==null)
        return;
    if(maxLevel < level){
        System.out.print(tNode.value + " ");
        maxLevel = level;
    }
    maxLevel = rViewUtil(tNode.right, level+1, maxLevel);
    maxLevel = rViewUtil(tNode.left, level+1, maxLevel);
    return maxLevel
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java中不使用队列的二叉树右视图 的相关文章

随机推荐

  • 在自定义 ViewGroup 中设置单独的 onClick 事件

    我创建了一个自定义 ViewGroup 在其中创建了几个自定义子视图 在 java 代码中 而不是 xml 中 这些子项中的每一个都需要具有相同的 onClick 事件 处理这些单击事件的方法驻留在使用布局的活动类中 如何将此方法设置为所有
  • Swift 2 - “if”中的模式匹配

    最近我看到了Apple的WWDC 2015主题演讲 我还查看了一些文档 但我找不到 if 中的模式匹配 部分 以及它是如何写在他们展示的一张幻灯片上的 68分00秒的视频来自苹果活动 http www apple com live 2015
  • 如何将 javaScript 函数传递给 Java 方法以充当回调 (Rhino)

    基本上我试图将 javaScript 函数传递给 Java 方法以充当脚本的回调 我可以做到 有点 但我收到的对象是一个 sun org mozilla javascript internal Interpreted 函数 我没有看到调用它
  • Spring MVC 中如何处理静态内容?

    我正在使用 Spring MVC 3 开发一个 web 应用程序 并且有DispatcherServlet像这样捕获所有对 的请求 web xml
  • 在 React 中将函数传递给 setState() 有什么好处?

    我有一个函数叫做onRemove是这样写的 const todos setTodos useState todoData const onRemove useCallback id gt setTodos todos filter todo
  • 如何在 photoLibrary 或相机中快速裁剪 4*3 图像

    我想在使用相机后裁剪图像或从照片库中选择图像 目前 我只能裁剪方形图像 不知道如何裁剪 4 3 图像 这是我的部分代码 let imagePicker UIImagePickerController UIImagePickerControl
  • VSCode,如何获取setup.bash等环境变量文件?

    所以我正在使用 WSL ROS 和 VSCode 在 Ubuntu 上工作时 我只需在运行 VsCode 之前获取 opt ros ros distro setup bash 来获取环境变量 使用 WSL 时 我需要一种从已打开的 VSCo
  • 从正则表达式重定向中排除目录

    我希望将所有带有下划线的 URL 重定向到其对应的虚线 E g nederland amsterdam car rental变成 nederland amsterdam car rental 为此 我使用此处描述的技术 如何使用 Nginx
  • Delphi:如何在本地创建和使用线程?

    我的数据库位于 VPS 中 我应该从我的表中获取一些查询 由于从服务器获取查询需要很长时间 取决于互联网速度 我想使用线程来获取查询 现在我创建一个线程并获取查询 然后通过发送和处理消息将结果发送到我的表单 我想知道是否可以在本地创建和使用
  • 多线程中的Tornado多个IOLoop

    我正在尝试在多个线程中运行多个 IOLoop 我想知道 IOLoop 实际上是如何工作的 class WebThread threading Thread def init self threading Thread init self n
  • 如何在 PHP 中获取两个日期之间的所有月份?

    我有 2 个约会 我想获得所有月份的总天数 我怎样才能在 PHP 中做到这一点 例如 date1 2013 11 13 yy mm dd format date2 2014 02 14 Output Months Total Days 11
  • C# 上的 DllImport

    如何在 C 中访问 C DLL 的函数 以下是 DLL 的原型 NOMANGLE int CCONV SSPSendCommand SSP COMMAND cmd SSP COMMAND INFO sspInfo NOMANGLE int
  • 使用 ~(波形符)导入 SCSS 文件在 Angular 6 中不起作用

    我有两个问题scssAngular6 中的文件导入 我需要将我的部分内容导入到我的所有内容中吗 component scss在全局中导入一次后的文件src sass styles scss 导入一次还不够吗 我如何导入SCSS使用导入快捷方
  • 浮点除以零而不是 constexpr

    编译时 constexpr double x 123 0 constexpr double y x 0 0 std cout lt lt x lt lt 0 lt lt y lt lt n 编译器 gcc 4 9 2 std c 11 或
  • 在 Dart 中进行系统调用?

    我想从 dart 内部执行 python 或 java 类 以下是我从 stackoverflow 问题 Java 中使用的片段 Runtime currentRuntime Runtime getRuntime Process execu
  • 计算相机近平面和远平面边界

    我正在尝试执行中提到的计算使用 THREE Frustum 计算近 远平面顶点 https stackoverflow com questions 12018710 calculate near far plane vertices usi
  • 用css根据屏幕尺寸制作圆形图像

    我正在尝试将我的图像制作为圆形 尽管该图像具有不同的宽度和高度 但我希望它是圆形 看起来它们具有相同的宽度和高度长度 例如 我的图像尺寸 250X300 但我希望它是200X200圆 实际上我可以轻松做到这一点 问题是根据屏幕尺寸执行此操作
  • 即使连接了硬件键盘也显示 iPhone 软键盘

    我的 iPad 应用程序使用充当硬件键盘的外部 设备 但是 在设置中的某个时刻 我需要输入文本 但无法使用 设备 设备 不是键盘 那么 即使我连接了硬件键盘 有没有办法强制弹出软键盘 是的 当用户拥有与设备配对的蓝牙扫描仪 键盘 时 我们已
  • 通过 MediatR PipelineBehavior 进行单元测试验证

    我正在使用 FluentValidation 和 MediatR PipelineBehavior 来验证 CQRS 请求 我应该如何在单元测试中测试这种行为 Use the 测试扩展 https docs fluentvalidation
  • Java中不使用队列的二叉树右视图

    HERE http www geeksforgeeks org print right view binary tree 2 是不使用队列的二叉树右视图的C 实现 当我尝试将其转换为 Java 时 它不起作用 这是我的Java代码 我认为很