前面我们了解了一些树以及二叉树的概念,这一节我们主要从代码层面来实现一下二叉树的三种遍历方式:
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);
}
执行一下,效果与我们想象的完全吻合。
网友评论