文章目录

  • 一、介绍
  • 二、建立二叉树
    • 1.节点类
    • 2.二叉树
  • 三、前序遍历
  • 四、中序遍历
  • 五、后序遍历
  • 六、完整代码

一、介绍

前序遍历、中序遍历和后序遍历是二叉树的三种遍历方式,三者很像,具体的遍历步骤如下:
前序遍历:先输出父节点,然后依次遍历左子树,右子树。
中序遍历:先遍历左子树,后输出父节点,之后遍历右子树。
后序遍历:先遍历左子树,后遍历右子树,之后输出父节点。

二、建立二叉树

1.节点类

class Node{int num;//数据Node left;//左节点Node right;//右节点public Node(int num) {this.num = num;}@Overridepublic String toString() {return "Node{" +"num=" + num +'}';}
}

2.二叉树

因为这里的二叉树是普通的,没有其他特性,不好建立二叉树类,就在main方法里面直接挂上就行了。这里我们以下图的二叉树为例。

main方法里面的代码:

 public static void main(String[] args) {Node root = new Node(1);Node n2 = new Node(2);Node n3 = new Node(3);Node n4 = new Node(4);Node n5 = new Node(5);Node n6 = new Node(6);Node n7 = new Node(7);Node n8 = new Node(8);Node n9 = new Node(9);root.left = n2;root.right = n3;n2.left = n4;n2.right = n5;n3.left = n6;n3.right = n7;n4.left = n8;n6.right = n9;}

三、前序遍历

使用递归的方法进行前序遍历,直接上代码。

 public static void preOrder(Node root){if(root == null){return;}System.out.print(root+" ");preOrder(root.left);preOrder(root.right);}

结果:
Node{num=1} Node{num=2} Node{num=4} Node{num=8} Node{num=5} Node{num=3} Node{num=6} Node{num=9} Node{num=7}

四、中序遍历

 public static void infixOrder(Node root){if(root == null){return;}infixOrder(root.left);System.out.print(root+" ");infixOrder(root.right);}

结果:
Node{num=8} Node{num=4} Node{num=2} Node{num=5} Node{num=1} Node{num=6} Node{num=9} Node{num=3} Node{num=7}

五、后序遍历

 public static void postOrder(Node root){if(root == null){return;}postOrder(root.left);postOrder(root.right);System.out.print(root+" ");}

结果:
Node{num=8} Node{num=4} Node{num=5} Node{num=2} Node{num=9} Node{num=6} Node{num=7} Node{num=3} Node{num=1}

六、完整代码

public class BinaryTreeDemo {public static void main(String[] args) {Node root = new Node(1);Node n2 = new Node(2);Node n3 = new Node(3);Node n4 = new Node(4);Node n5 = new Node(5);Node n6 = new Node(6);Node n7 = new Node(7);Node n8 = new Node(8);Node n9 = new Node(9);root.left = n2;root.right = n3;n2.left = n4;n2.right = n5;n3.left = n6;n3.right = n7;n4.left = n8;n6.right = n9;preOrder(root);System.out.println();infixOrder(root);System.out.println();postOrder(root);}public static void preOrder(Node root){if(root == null){return;}System.out.print(root+" ");preOrder(root.left);preOrder(root.right);}public static void infixOrder(Node root){if(root == null){return;}infixOrder(root.left);System.out.print(root+" ");infixOrder(root.right);}public static void postOrder(Node root){if(root == null){return;}postOrder(root.left);postOrder(root.right);System.out.print(root+" ");}
}//节点
class Node{int num;Node left;Node right;public Node(int num) {this.num = num;}@Overridepublic String toString() {return "Node{" +"num=" + num +'}';}
}

二叉树的前序、中序和后序遍历介绍及案例相关推荐

  1. 二叉树深度优先 java_二叉树遍历(前序、中序、后序、层次、深度优先、广度优先遍历) java实现...

    二叉树是一种非常重要的数据结构,非常多其他数据结构都是基于二叉树的基础演变而来的.对于二叉树,有深度遍历和广度遍历,深度遍历有前序.中序以及后序三种遍历方法,广度遍历即我们寻常所说的层次遍历.由于树的 ...

  2. 手动创建一棵二叉树,然后利用前序、中序、后序、层序进行遍历(从创建二叉树到各种方式遍历)(含运行结果)

    手动创建一棵二叉树,然后利用前序.中序.后序.层序进行遍历 import java.util.LinkedList; import java.util.List; import java.util.Q ...

  3. 【LeetCode系列】从中序与后序遍历序列构造二叉树 从前序与中序遍历序列构造二叉树...

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 105. 从前序与中序遍历序列构造二叉树 根据一棵树的前序遍历与中序遍历构造二叉树 ...

  4. 105从前序与中序遍历序列构造二叉树 106 从中序与后序遍历序列构造二叉树 (递归 + 哈希)

    引言 这两道题主要是考察二叉树遍历的掌握,即由前序和中序推出原二叉树,由后序和中序推出原二叉树,这里先来说一下推导过程: 前序和中序 知道前序遍历和中序遍历,如何推原二叉树?(直接是结论,可以自行推导 ...

  5. 二叉树前序、中序、后序遍历求法

    二叉树前序.中序.后序遍历相互求法 二叉树的三种遍历方法: 前序遍历: 1.访问根节点 2.前序遍历左子树 3.前序遍历右子树 中序遍历: 1.中序遍历左子树 2.访问根节点 3.中序遍历右子树 后序 ...

  6. PHP实现二叉树的深度优先遍历(前序、中序、后序)和广度优先遍历(层次) 转载陈小龙哈2017...

    http://blog.csdn.net/baidu_30000217/article/details/52953127 前言: 深度优先遍历:对每一个可能的分支路径深入到不能再深入为止,而且每个结点 ...

  7. 二叉树前序遍历python输出_Python 二叉树查找 前序 中序 后序遍历

    # -*- coding: utf-8 -*- # author: zhonghua # filename: search_binarytree.py # create: 2016/3/29 # ve ...

  8. 二叉树的前序、中序、后序遍历与创建

    #include <iostream> #include <string> #include <stack> using namespace std; struct ...

  9. leetcode 106. 从中序与后序遍历序列构造二叉树 105. 从前序与中序遍历序列构造二叉树思考分析

    目录 1.106题目 2.参考思路:递归切割数组 3.105题目 4.同样思路的代码 1.106题目 2.参考思路:递归切割数组 代码参考:公众号:代码随想录 后序数组+中序数组 以 后序数组(左右中 ...

  10. java二叉树合并_Java(树的前中后序遍历构造二叉树题型整合)前序和中序、中序和后序、前序和后序遍历序列构造二叉树算法整合归纳...

    前言 二叉树各种花里胡哨的算法题真的把我搞晕了,今天特地整理出一类有关二叉树的算法题,希望能帮助阅读到此文章的人,今后不再受此类题型的困扰. 一.题目类型 已知二叉树的两种遍历序列,请根据该序列构建二 ...

最新文章

  1. SQL Server查询某字段在哪些表中
  2. 【剑指offer】丑数
  3. eclipse做java_在Eclipse中使用Java 12
  4. CentOS 5.3 下快速安装配置 PPTP ××× 服务器
  5. Script:Collect vip resource Diagnostic Information
  6. [转贴]Cocos2d-x3.2与OpenGL渲染总结(一)Cocos2d-x3.2的渲染流程
  7. 为什么年轻人挣得很多还是穷?北上广深挑战指数报告~
  8. java swing removeall_java中JFrame中函数removeAll的用法 | 学步园
  9. 如何在VScode 中 调试 ts 文件 Unit test
  10. Log4net使用指南[转]
  11. VS2008添加ODBC数据源崩溃
  12. android用户头像保存,Android的登陆注册(sharedpreferences和SQLite保存以及头像上传显示...
  13. iOS应用崩溃日志分析
  14. div+css视频教程大全免费下载更有html5教程
  15. C1认证之计算机通识知识及习题总结——我的学习笔记
  16. matlab中clc什么意思,MATLAB中clc是什么意思
  17. lnmp一键部署脚本
  18. copy.copy()与copy.deepcopy()的详解
  19. Python知识体系图
  20. 7.26 2第5篇 无人驾驶带来巨大商机

热门文章

  1. 内核层CS段描述符信息
  2. 对话预训练_百度发布首个大规模隐变量对话模型PLATO
  3. (32)第一个驱动程序
  4. 攻击者怎样使用HTML和CSS隐藏“外部发件人”电子邮件警告
  5. 1.15 Java访问控制修饰符(public、 private、protected 和 friendly)
  6. 第五讲 树状数组与线段树 【未完结】
  7. 给虚拟机中的linux系统增加一个硬盘
  8. 第三章 Matlab数组
  9. python中的encode()和decode()函数
  10. mySQL之单表更新