package com.company;
import java.util.Arrays;
import java.util.LinkedList;
public class Main {
// 定义结点类
private static class TreeNode {
int data;
TreeNode lChild;
TreeNode rChild;
TreeNode(int data) {
this.data = data;
}
}
// 构造方法
public static TreeNode createBiTree(LinkedList<Integer> inputList) {
TreeNode tnode = null;
if (inputList == null || inputList.isEmpty()) {
return null;
}
// 递归方式创建二叉树
Integer data = inputList.removeFirst();
if (data != null) {
tnode = new TreeNode(data);
tnode.lChild = createBiTree(inputList);
tnode.rChild = createBiTree(inputList);
}
return tnode;
}
// 前序遍历,递归方法
public static void preOrderTraveral(TreeNode tnode) {
if (tnode == null) {
return;
}
System.out.println(tnode.data);
preOrderTraveral(tnode.lChild);
preOrderTraveral(tnode.rChild);
}
public static void inOrderTraveral(TreeNode tnode) {
if (tnode == null) {
return;
}
inOrderTraveral(tnode.lChild);
System.out.println(tnode.data);
inOrderTraveral(tnode.rChild);
}
public static void postOrderTraveral(TreeNode tnode) {
if (tnode == null) {
return;
}
postOrderTraveral(tnode.lChild);
postOrderTraveral(tnode.rChild);
System.out.println(tnode.data);
}
public static void main(String[] args) {
LinkedList<Integer> inputList = new LinkedList<Integer>(Arrays.asList(new Integer[]{1, 2, 3, null, null, 4, null,
null, 5, null, 6}));
TreeNode treeNode = createBiTree(inputList);
System.out.println(" 前序遍历: ");
preOrderTraveral(treeNode);
System.out.println(" 中序遍历: ");
inOrderTraveral(treeNode);
System.out.println(" 后序遍历: ");
postOrderTraveral(treeNode);
}
}