美文网首页
二叉树的三种遍历代码实现

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

作者: 斌斌爱学习 | 来源:发表于2018-06-03 23:45 被阅读0次

前面我们了解了一些树以及二叉树的概念,这一节我们主要从代码层面来实现一下二叉树的三种遍历方式:
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);
        }

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

相关文章

网友评论

      本文标题:二叉树的三种遍历代码实现

      本文链接:https://www.haomeiwen.com/subject/klbssftx.html