详解Java中如何通过递归算法实现按层遍历二叉树

  • 原创
  • |
  • 浏览:170
  • |
  • 更新:

本篇经验将分享一道算法面试题的解法 :通过 Java 语言实现一个递归算法,能按层遍历一棵二叉树(按层遍历即广度优先搜索)。

 

详解Java中如何通过递归算法实现按层遍历二叉树

工具/原料

  • Eclipse
  • JDK1.8

方法/步骤

  1. 1

    声明一个表示二叉树节点的静态内部类 TreeNode , 图示,通过该类对象可以构建一棵二叉树结构。

     

    详解Java中如何通过递归算法实现按层遍历二叉树
  2. 2

    编写一个方法,通过递归调用的方式,获取一棵二叉树的高度,步骤如下:

    1. 如果参数节点为空,则返回高度 0;

    2. 否则递归调用该算法,分别获取节点左右子树的高度;

    3. 左右子树高度的较大值加 1 即以当前节点为根的二叉树的高度。

     

    详解Java中如何通过递归算法实现按层遍历二叉树
  3. 2
    相关内容非法爬取自百度经验
  4. 3

    编写基于递归调用的算法,实现按层遍历一棵二叉树,其包含3个参数:

    1. 当前遍历的二叉树节点;

    2. 存放结果的嵌套列表,内层列表分别表示每一层的遍历结果;

    3. 表示当前遍历的二叉树层数(从 0 开始,0 即代表二叉树第 1 层)。

    算法实现步骤如下:

    1. 如果遍历的阶段为空,则直接返回;

    2. 否则通过递归调用遍历其左右子树,对应的表示层数的第3个参数加 1;

    3. 将当前节点的值添加到该层对应的结果数据结构中(即第2个参数)。

     

    详解Java中如何通过递归算法实现按层遍历二叉树
  5. 4

    综合上述算法,实现一个方法,可广度优先遍历一棵二叉树:

    1. 调用算法获取二叉树的高度;

    2. 通过二叉树的高度,构建一个存储按层遍历二叉树结果的嵌套列表;

    3. 调用递归算法,按层遍历二叉树,从第 0 层开始遍历。

     

    详解Java中如何通过递归算法实现按层遍历二叉树
  6. 5

    创建本地测试主方法:

    1. 构建一棵二叉树;

    2. 按层遍历二叉树,并将遍历结果打印到控制台。

     

    详解Java中如何通过递归算法实现按层遍历二叉树
  7. 6

    运行本地测试主方法,观察控制台输出,图示,符合预期,按层遍历二叉树的递归算法测试通过。其时间复杂度为 O(N),N 即二叉树的节点数量。

     

    详解Java中如何通过递归算法实现按层遍历二叉树
    END

注意事项

  • 纸上得来终觉浅,绝知此事要躬行!
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。
作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。
展开阅读全部