【算法】二叉树的前序、中序、后序遍历

原理

比如,有一个二叉树:
图片.png
前序遍历:DBEAFCG
中序遍历:ABDECFG
后序遍历:GCFAEBD

代码

前序遍历
    public static void main(String[] args) {
        TreeNode node7 = new TreeNode('G', null, null);
        TreeNode node6 = new TreeNode('F', null, null);
        TreeNode node5 = new TreeNode('E', null, null);
        TreeNode node4 = new TreeNode('D', null, null);
        TreeNode node3 = new TreeNode('C', node6, node7);
        TreeNode node2 = new TreeNode('B', node4, node5);
        TreeNode node1 = new TreeNode('A', node2, node3);

        traversalByFront(node1);
    }

    private static void traversalByFront(TreeNode root) {
        if (root == null) {
            return;
        }
        if (root.left == null && root.right == null) {
            System.out.println(root.val);
            return;
        }
        if (root.left != null) {
            traversalByFront(root.left);
        }
        System.out.println(root.val);
        if (root.right != null) {
            traversalByFront(root.right);
        }
    }
中序遍历
    public static void main(String[] args) {
        TreeNode node7 = new TreeNode('G', null, null);
        TreeNode node6 = new TreeNode('F', null, null);
        TreeNode node5 = new TreeNode('E', null, null);
        TreeNode node4 = new TreeNode('D', null, null);
        TreeNode node3 = new TreeNode('C', node6, node7);
        TreeNode node2 = new TreeNode('B', node4, node5);
        TreeNode node1 = new TreeNode('A', node2, node3);

        traversalByMiddle(node1);
    }

    private static void traversalByMiddle(TreeNode root) {
        if (root == null) {
            return;
        }
        if (root.left == null && root.right == null) {
            System.out.println(root.val);
            return;
        }
        System.out.println(root.val);
        if (root.left != null) {
            traversalByMiddle(root.left);
        }
        if (root.right != null) {
            traversalByMiddle(root.right);
        }
    }

后序遍历
    public static void main(String[] args) {
        TreeNode node7 = new TreeNode('G', null, null);
        TreeNode node6 = new TreeNode('F', null, null);
        TreeNode node5 = new TreeNode('E', null, null);
        TreeNode node4 = new TreeNode('D', null, null);
        TreeNode node3 = new TreeNode('C', node6, node7);
        TreeNode node2 = new TreeNode('B', node4, node5);
        TreeNode node1 = new TreeNode('A', node2, node3);

        traversalByBehind(node1);
    }

    private static void traversalByBehind(TreeNode root) {
        if (root == null) {
            return;
        }
        if (root.left == null && root.right == null) {
            System.out.println(root.val);
            return;
        }
        if (root.right != null) {
            traversalByBehind(root.right);
        }
        System.out.println(root.val);
        if (root.left != null) {
            traversalByBehind(root.left);
        }
    }

最近更新

  1. TCP协议是安全的吗?

    2024-04-13 23:50:05       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-13 23:50:05       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-13 23:50:05       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-13 23:50:05       18 阅读

热门阅读

  1. 探索 IT 行业的广阔前景

    2024-04-13 23:50:05       12 阅读
  2. AI是什么?

    2024-04-13 23:50:05       14 阅读
  3. Human Motion Diffusion Model 安装

    2024-04-13 23:50:05       16 阅读
  4. 《程序员的选择逻辑与思考》

    2024-04-13 23:50:05       14 阅读
  5. 4月12日,每日信息差

    2024-04-13 23:50:05       10 阅读
  6. C++笔记打卡第11天(运算符重载、继承)

    2024-04-13 23:50:05       10 阅读
  7. 微信小程序常见面试题13道

    2024-04-13 23:50:05       13 阅读
  8. 有源与无源系统:Active Systems and Passive Systems

    2024-04-13 23:50:05       12 阅读
  9. R-tree总结

    2024-04-13 23:50:05       13 阅读
  10. 【并发】面试题汇总

    2024-04-13 23:50:05       11 阅读
  11. 面试题讲解

    2024-04-13 23:50:05       11 阅读
  12. R-tree总结

    2024-04-13 23:50:05       12 阅读
  13. 安全地创建一个临时文件 - mkstemp

    2024-04-13 23:50:05       14 阅读
  14. 游戏&软件测试流程

    2024-04-13 23:50:05       13 阅读