二叉树的三种遍历代码实现

前面我们了解了一些树以及二叉树的概念,这一节我们主要从代码层面来实现一下二叉树的三种遍历方式:
1.前序遍历
2.中序遍历
3.后序遍历

假设我们有这样一棵树:


二叉树.jpg

那么按照前序遍历,顺序应为如下图所示:


前序遍历

按照中序遍历,顺序应为下图所示:


中序遍历

按照后序遍历,其顺序应为下图所示:


后序遍历

那么,我们就从代码层面开始实现上述三种遍历方式。

首先,我们确定数据格式:
1.T 用于存储数据
2.leftNode 用于表示左子树
3.rightNode 用于表示右子树

       T data;
        Node leftNode;
        Node rightNode;

        public Node(T data, Node leftNode, Node rightNode) {
            this.data = data;
            this.leftNode = leftNode;
            this.rightNode = rightNode;
        }

然后创建我们想要的树

 public void createTree() {
            if (root == null) {
                return;
            }
            Node NodeB = new Node("B", null, null);
            Node NodeC = new Node("C", null, null);
            Node NodeD = new Node("D", null, null);
            Node NodeE = new Node("E", null, null);
            Node NodeF = new Node("F", null, null);
            Node NodeG = new Node("G", null, null);
            Node NodeH = new Node("H", null, null);
            Node NodeI = new Node("I", null, null);
            root.leftNode = NodeB;
            root.rightNode = NodeC;
            NodeB.leftNode = NodeD;
            NodeC.leftNode = NodeE;
            NodeC.rightNode = NodeF;
            NodeD.leftNode = NodeG;
            NodeD.rightNode = NodeH;
            NodeE.rightNode = NodeI;
        }

前序遍历方法:

      /*
        * 前序遍历
        * */
        public void preOder(Node root) {
            if (root == null) {
                return;
            }
            System.out.println("pre :" + root.data);
            preOder(root.leftNode);
            preOder(root.rightNode);
        }

中序遍历方法:

       /*
       * 中序遍历
       * */
        public void midOder(Node root) {
            if (root == null) {
                return;
            }
            midOder(root.leftNode);
            System.out.println("mid :" + root.data);
            midOder(root.rightNode);
        }

后序遍历方法:

      /*
       * 后序遍历
       * */
        public void postOder(Node root) {
            if (root == null) {
                return;
            }
            postOder(root.leftNode);
            postOder(root.rightNode);
            System.out.println("post :" + root.data);
        }

执行一下,效果与我们想象的完全吻合。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 树的概述 树是一种非常常用的数据结构,树与前面介绍的线性表,栈,队列等线性结构不同,树是一种非线性结构 1.树的定...
    Jack921阅读 4,489评论 1 31
  • 上一篇文章讲述了树的概念, 特征以及分类, 旨在让我们理解什么是树, 树的一些常用的概念是什么,树的分类有哪些等。...
    DevCW阅读 2,074评论 4 10
  • 数据结构和算法--二叉树的实现 几种二叉树 1、二叉树 和普通的树相比,二叉树有如下特点: 每个结点最多只有两棵子...
    sunhaiyu阅读 6,532评论 0 14
  • 前言 树是数据结构中的重中之重,尤其以各类二叉树为学习的难点。一直以来,对于树的掌握都是模棱两可的状态,现在希望通...
    MrHorse1992阅读 354,042评论 51 536
  • 上周没能静心看书,昨晚下班回来,又玩起了手机,实在惰性太大啊。徐某呀。你要学会管住自己呀,等考完试,你再看,也是可...
    冷冷离离阅读 498评论 0 0