使用 Java 和递归进行二叉树的级别顺序遍历

2024-03-06

我在使用递归时遇到二叉树的级别顺序遍历问题。我输入以下值:50,60,70,30,20,10 这是我正在使用的代码:

    public void levelOrder(Node localRoot){
    if(localRoot != null){
        if(localRoot.leftChild != null && localRoot.rightChild != null){
            System.out.print(localRoot.iData + " ");
            System.out.print(localRoot.leftChild.iData + " ");
            System.out.print(localRoot.rightChild.iData + " ");
            levelOrder(localRoot.leftChild);
            levelOrder(localRoot.rightChild);
        }
        else if(localRoot.rightChild == null && localRoot.leftChild == null){
            ;
        }
        else if(localRoot.rightChild == null){
            System.out.print(localRoot.leftChild.iData + " ");
            //levelOrder(localRoot.leftChild);
        }
        else{
            System.out.print(localRoot.rightChild.iData + " ");
            //levelOrder(localRoot.rightChild);
        }
    }
}

不使用堆栈可以递归吗?因为目前这个函数将我一路向左,然后向右。我可以做些什么不同的事情?

我的这段代码的输出是:50、30、60、20、70,但它不打印 10。


有趣的是,这是一个相当常见的问题(谷歌“递归面包首先遍历”,并且有几个类似答案的 stackoverflow 链接)

到目前为止最好的就在这里

递归执行广度优先搜索 https://stackoverflow.com/questions/2549541/performing-breadth-first-search-recursively

我同意最佳答案的作者的观点,将迭代算法(广度优先遍历)转变为递归解决方案确实没有意义。正如前面提到的,将迭代转变为尾递归是很容易的,但是这样做的目的是什么?而且你仍然需要排队。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Java 和递归进行二叉树的级别顺序遍历 的相关文章

  • 如何使用 Java 将 HTML 内容转换为 PDF 而不丢失格式?

    我有一些 HTML 内容 包括格式化标签 例如strong 图像等 在我的 Java 代码中 我想将此 HTML 内容转换为 PDF 文档 而不丢失 HTML 格式 有没有办法用 Java 来实现 使用 iText 或任何其他库 I use
  • 如何防止在 CXF Web 服务客户端中生成 JAXBElement

    我正在尝试使用 CXF 创建一个 Web 服务客户端来使用 WCF Web 服务 当我使用 wsdl2java 时 它生成具有 JAXBElement 类型而不是 String 的对象 我读到有关使用 jaxb bindings xml 文
  • H264 字节流到图像文件

    第一次来这里所以要温柔 我已经在给定的 H 264 字节流上工作了几个星期 一般注意事项 字节流不是来自文件 它是从外部源实时提供给我的 字节流使用 Android 的媒体编解码器进行编码 当将流写入扩展名为 H264的文件时 VLC能够正
  • Java中定义类型后同时初始化多个变量?

    这里需要一些语法方面的帮助 我正在尝试在定义类型后重新初始化多个变量 例如 int bonus sales x y 50 这工作正常 但是我想稍后在程序中将不同的值放入其中一些变量中 但我收到语法错误 bonus 25 x 38 sales
  • 从剪贴板获取图像 Awt 与 FX

    最近 我们的 Java FX 应用程序无法再从剪贴板读取图像 例如 用户在 Microsofts Paint 中选择图像的一部分并按复制 我不是在谈论复制的图像文件 它们工作得很好 我很确定它过去已经有效 但我仍然需要验证这一点 尽管如此
  • Maven 目标的默认阶段?

    据我了解 在 Maven 中 插件目标可以附加到生命周期阶段 如果没有定义 默认阶段是什么 根据我的经验 这取决于插件的目标 例如 组装 单个 http maven apache org plugins maven assembly plu
  • 如果按下 Esc 则中断循环

    我用 JAVA 语言编写了一个程序 它使用 Scanner 类接受来自控制台的输入 现在我想将此功能添加到我的代码中 以便在用户按下 Esc 按钮时存在循环 while 到目前为止 我认为键盘类可以帮助我 但它就像扫描仪一样 我尝试使用事件
  • 动画图像视图

    目前我正在开发一款游戏 这是我的游戏的详细信息 用户应选择正确的图像对象 我希望图像从左到右加速 当他们到达终点时 他们应该再次出现在活动中 这是我正在处理的屏幕截图 我有 5 个图像视图 它们应该会加速 您有此类动画的示例代码吗 非常感谢
  • BigDecimal 的 JPA @Size 注释

    我该如何使用 SizeMySQL 的注释DECIMAL x y 列 我在用着BigDecimal 但是当我尝试包括 Size max它不起作用 这是我的代码 Size max 7 2 Column name weight private B
  • 此版本不符合 Google Play 64 位要求,添加库后仍然出现错误

    我正在 Play 商店上传一个视频编辑器应用程序 其中包含带有一些本机代码的库 所以我通过将其添加到 gradle 来使其兼容 64 位 ndk abiFilters armeabi v7a arm64 v8a x86 x86 64 添加了
  • 更改 JTextPane 的大小

    我是Java新手 刚刚在StackOverflow中找到了这段代码 ResizeTextArea https stackoverflow com questions 9370561 enabling scroll bars when jte
  • 用于防止滥用的 Servlet 过滤器? (DoS、垃圾邮件等)

    我正在寻找一个 Servlet 过滤器库 它可以帮助我保护我们的 Web 服务免受未经授权的使用和 DDoS 攻击 我们的网络服务有 授权客户 因此理想情况下 过滤器将帮助检测未经授权或行为不当的客户 或检测使用同一帐户的多个人 此外 我们
  • 无法在 Mac OS X 上启动应用程序 我收到错误 LSOpenURLsWithRole() 应用程序失败,错误为 -10810

    问题 我正在尝试启动一个应用程序 遗传网络分析仪 http www genostar com category products gna 但它默默地失败了 使用时open gna app产生以下错误消息 LSOpenURLsWithRole
  • Scala(或 Java)中泛型函数的特化

    是否可以在 Scala 中专门化泛型函数 或类 例如 我想编写一个将数据写入 ByteBuffer 的通用函数 def writeData T buffer ByteBuffer data T buffer put data 但由于 put
  • Java 中 static 关键字如何工作?

    我正在阅读Java教程 http docs oracle com javase tutorial index html从一开始我就有一个问题static字段或变量上的关键字 作为Java said here http docs oracle
  • XSLT:我们可以使用abs值吗?

    我想知道在 XSLT 中我们是否可以使用 math abs 我在某处看到过这个 但它不起作用 我有类似的东西
  • 膨胀类片段 InflateException 二进制 XML 文件时出错

    我正在使用 Material Design 和 NavigationDrawer 布局等设计我的第一个应用程序 但我遇到了一个问题 该应用程序非常简单 它只显示文本 并且基于 Android Studio 中提供的模板 尝试启动我的应用程序
  • 在 netBeans 中运行程序时,字体看起来非常奇怪

    我在我的新 MacBook M1 上设置了 netBeans 和 SceneBuilder 除了运行程序时的字体外 一切正常 它看起来像这样 我不知道为什么 按钮应显示 Click me 标签应显示 Hello 我收到的错误消息是 M rz
  • java数据结构模拟数据树

    我需要帮助定义使用什么方法 我有一个 SOAP 响应 给我一个 xml 文件 我需要在屏幕上显示 3 个相关列表 当您在第一个列表中选择一个项目时 相应的选择将出现在第二个列表中 依此类推 我只对从 xml 流中提取数据后如何有效地组织数据
  • 当我在 Java 中输入 IP 时无法连接到我的服务器

    好的 我正在尝试学习 Java 客户端 服务器的内容 并且正在浏览教程代码 如下所示 当我将 localhost 更改为我的 IP 时 它会停止工作 请帮忙 编辑 127 0 0 1 似乎也可以工作 但不是我的真实IP Copyright

随机推荐

  • 正则表达式 - 查找字符串中的特定数字

    我一整天都在与正则表达式作斗争 找不到解决方案 我试图在包含数字 分号 冒号和空格的字符串中找到一些特定的数字 出于我们的目的 假设我正在寻找号码1234 以下是一些应该匹配的示例 每一行都是不同的字符串 1234 1234 1234 56
  • 缺乏释放会导致什么样的问题?

    我目前遇到问题 glibc detected efit free invalid next size fast 0x00000000006127f0 带有通常的内存映射和回溯信息glibc错误 但是 我无法找到这个问题的原因 看起来 基本上
  • 我如何在 SQL SERVER 2008 中使用 Active Directory 用户进行身份验证但没有 Windows 身份验证

    在网上查阅了很多资料后 我找不到解决方案 我希望你理解我 我的英语不是最好的 Issue 我想使用域 活动目录 的有效用户对 SQL Server 进行身份验证 该用户是从我的应用程序 旧应用程序 的登录名 用户名和密码 中获取的 登录到我
  • Haskell 中带有元组参数的函数组合[重复]

    这个问题在这里已经有答案了 有时我有两种形式的函数 f a gt b1 b2 h b1 gt b2 gt c 我需要组合物 g 我通过将 h 更改为 h 来解决这个问题 h b1 b2 gt c 你能告诉我 如果可能的话 一个函数 m 吗
  • 卸载netbeans 7.0.1插件,netbeans无法启动

    安装 python 插件后 Vista 上的 Netbeans 7 0 1 无法启动 如何手动卸载插件 是否有命令行参数可以在没有插件的情况下启动netbeans 如果没有 这应该很容易添加到 netbeans 我遇到过同样的问题 这是我在
  • 如何使用pypyodb在python中正确连接到sql server

    当我输入代码时 connection pypyodbc connect driver SQL Server server ServerName database DatabaseName uid UserId pwd Password 我收
  • 包含 UTF-8 字符的批处理文件中的命令行参数会导致问题

    我编写了一个小实用程序 它采用路径作为命令行参数 但如果 且仅当 该参数是从批处理文件传递并包含 UTF 8 字符 如变音符号 时 不幸的是 这在以下情况下相当常见 我就会遇到麻烦 系统语言为德语 我可以从项目调试属性中传递带有元音变音的文
  • 使用公式R1C1内的变量进行抵消

    我有以下代码行 ActiveCell FormulaR1C1 sqrt RC 1 现在我想使用一个变量 例如 x 而不是 1 如下所示 ActiveCell FormulaR1C1 sqrt RC x 这会返回一个错误 我有什么办法可以做到
  • 如何更改 SwiftUI 中导航栏的背景颜色?

    我想更改导航栏的背景颜色 但我做错了什么 颜色看起来如此不同 My code UINavigationBar appearance backgroundColor red return VStack spacing 0 Text Test
  • 如何在 JS 中导出文件中的所有函数?

    我正在创建一个单位转换器 并且我想将所有转换函数放入它们自己的文件中 使用ES6export 有没有什么方法可以仅使用一行导出文件中的所有函数及其默认名称 例如 export default all 这些函数都只在文件中 而不是在对象内 不
  • 如果列为空,SQLiteCursor 会做什么?

    我想从 SQLite 查询返回的游标中获取一个整数 但我知道该整数可能为空 不幸的是 我找不到任何允许我检查这一点的 Cursor 方法 代码将是 mModifiedDate cursor getInt cursor getColumnIn
  • 如何将 libcurl 与 dev c++ 静态链接?

    最近我尝试将 libcurl 与 dev c 静态链接 我链接了除来自 libcurl 的 libcurldll a 文件之外的所有 a 文件 并且我定义了 CURL STATICLIB 但我收到了一些链接器错误 然后我在谷歌上搜索了这个链
  • Java POS 开发入门

    我有一个要求 需要从 Java Swing 应用程序连接到 POS 打印机 我了解到有一个名为 Java POS 的标准可以实现这一目标 现在问题出在java POS网站上 http www javapos com http www jav
  • 变换:翻译和位置:相对的区别;?

    正如标题所说 transform translate x y 和position relative之间有什么区别 既然它们都完成相同的事情 位置元素 那么它们在目的和应用方面有何不同 我读了一篇关于使用 transform translat
  • 线程本地存储GCC编译器

    我声明一个变量 thread int my id 我的平台和编译器的信息 Configured with src configure v with pkgversion Ubuntu Linaro 4 6 1 9ubuntu3 with b
  • 带两个参数的 python pandas 滚动函数

    我这个初学Python的人对Python的热爱正经受着艰难的考验 我需要在固定长度的滚动窗口中计算一个函数 假设 5 该函数需要两个参数 我很清楚答案here https stackoverflow com questions 256753
  • TypeError [ERR_UNKNOWN_FILE_EXTENSION]:Visual Studio Code 上的未知文件扩展名“.ts”

    我一直在对一些代码进行单元测试 似乎不知从何而来 我收到了有关未知文件扩展名的错误 之前 我收到了有关如何无法识别某些类型的错误 这是我的 package json name cgt core engine mv description A
  • 我们可以在 mysql 程序之外声明游标吗

    我无法声明游标 mysql中游标的意义是什么 declare c1 cursor for select name from record ERROR 1064 42000 您的 SQL 语法有错误 检查 与您的 MySQL 服务器版本相对应
  • 如何从测试目录中的文件访问 src 目录中的文件?

    我的项目布局如下所示 src int rle rs lib rs tests test int rle rs 该项目编译为cargo build 但我无法运行测试cargo test 我收到错误 error E0432 unresolved
  • 使用 Java 和递归进行二叉树的级别顺序遍历

    我在使用递归时遇到二叉树的级别顺序遍历问题 我输入以下值 50 60 70 30 20 10 这是我正在使用的代码 public void levelOrder Node localRoot if localRoot null if loc