本案例中二叉树的结构
package com.tree;
import java.util.ArrayList;
import java.util.List;
class Test {
public static void main(String[] args) {
Node node1 = new Node(null,null,1);//根节点
Node node2 = new Node(null,null,2);
Node node3 = new Node(null,null,3);
node1.addLeft(node2);
node1.addRight(node3);
Node node4 = new Node(null,null,4);
Node node5 = new Node(null,null,5);
node2.addLeft(node4);
node2.addRight(node5);
Node node6 = new Node(null,null,6);
Node node7 = new Node(null,null,7);
node3.addLeft(node6);
node3.addRight(node7);
System.out.println("\n-----------");
Node.preorderTraversal(node1);
System.out.println("\n-----------");
Node.postorderTraversal(node1);
System.out.println("\n-----------");
Node.inorderTraversal(node1);
}
}
//定义树的节点,left为该节点的左孩子,right为该节点的右孩子。value为该节点的内容
class Node{
Node left;
Node right;
Integer value;
public Node(Node left, Node right, Integer value) {
this.left = left;
this.right = right;
this.value = value;
}
public void addLeft(Node left){
this.left = left;
}
public void addRight(Node right){
this.right = right;
}
/**
* 前序遍历
* 1.先访问当前节点
* 2.按照先序访问左子树
* 3.按照先序访问右子树
*/
public static void preorderTraversal(Node node) {
if(node == null){
return;
}
System.out.print(node.value+" ");
preorderTraversal(node.left);
preorderTraversal(node.right);
}
/**
* 中序遍历
* 1.按照中序遍历左子树
* 3.访问当前节点
* 2.按照中序遍历右子树
* @param node
*/
public static void inorderTraversal(Node node) {
if(node == null){
return;
}
inorderTraversal(node.left);
System.out.print(node.value+" ");
inorderTraversal(node.right);
}
/**
* 后序遍历
* 1.按照后序遍历左子树
* 2.按照后序遍历右子树
* 3.访问当前节点
* @param node
*/
public static void postorderTraversal(Node node) {
if(node == null){
return;
}
postorderTraversal(node.left);
postorderTraversal(node.right);
System.out.print(node.value+" ");
}
}
输出结果