public class TreeNode<E>{
private E element;
private TreeNode<E> leftNode;
private TreeNode<E> rightNode;
public TreeNode(E element) {
this.element = element;
}
public E getElement() {
return element;
}
public void setElement(E element) {
this.element = element;
}
public TreeNode<E> getLeftNode() {
return leftNode;
}
public void setLeftNode(TreeNode<E> leftNode) {
this.leftNode = leftNode;
}
public TreeNode<E> getRightNode() {
return rightNode;
}
public void setRightNode(TreeNode<E> rightNode) {
this.rightNode = rightNode;
}
public void frontShow() {
System.out.print(element+" ");
if (leftNode != null) {
leftNode.frontShow();
}
if (rightNode != null) {
rightNode.frontShow();
}
}
public void midShow() {
if (leftNode != null) {
leftNode.midShow();
}
System.out.print(element + " ");
if (rightNode != null) {
rightNode.midShow();
}
}
public void afterShow() {
if (leftNode != null) {
leftNode.afterShow();
}
if (rightNode != null) {
rightNode.afterShow();
}
System.out.print(element + " ");
}
}
public class BinaryTree<E> {
private TreeNode<E> root;
public TreeNode<E> getRoot() {
return root;
}
public void setRoot(TreeNode<E> root) {
this.root = root;
}
/**
* 先序遍历,根左右
*/
public void frontShow() {
root.frontShow();
}
/**
* 中序遍历,左根右
*/
public void midShow() {
root.midShow();
}
/**
* 后序遍历,左右根
*/
public void afterShow() {
root.afterShow();
}
}
测试类:
public class BinaryTreeTest {
public static void main(String[] args) {
/*二叉树
* 1
* 2 3
* 4 5 6 7
*
*/
//创建一颗二叉树
BinaryTree<Integer> binaryTree = new BinaryTree<>();
//创建根节点
TreeNode<Integer> root = new TreeNode<>(1);
binaryTree.setRoot(root);
//给根节点创建一个左节点
TreeNode<Integer> leftNode = new TreeNode<>(2);
root.setLeftNode(leftNode);
//给根节点创建一个右节点
TreeNode<Integer> rightNode = new TreeNode<>(3);
root.setRightNode(rightNode);
//创建第三层节点
leftNode.setLeftNode(new TreeNode<>(4));
leftNode.setRightNode(new TreeNode<>(5));
rightNode.setLeftNode(new TreeNode<>(6));
rightNode.setRightNode(new TreeNode<>(7));
//前序遍历
System.out.print("前序遍历结果:");
binaryTree.frontShow();
System.out.println("\n======================================");
//中序遍历
System.out.print("中序遍历结果:");
binaryTree.midShow();
System.out.println("\n======================================");
//后序遍历
System.out.print("后序遍历结果:");
binaryTree.afterShow();
}
}
测试结果: