# 生成二叉排序树并先序遍历、中序遍历、后序遍历

1、新建BinaryTree.java文件定义二叉树结构：

public class BinaryTree {
private int data;
private BinaryTree left;
private BinaryTree right;
public BinaryTree(int data){
this.data = data;
this.left = null;
this.right = null;
}
public int getData() {
return data;
}
public void setData(int data) {
this.data = data;
}
public BinaryTree getLeft() {
return left;
}
public void setLeft(BinaryTree left) {
this.left = left;
}
public BinaryTree getRight() {
return right;
}
public void setRight(BinaryTree right) {
this.right = right;
}

}

2、新建操作类BinaryTreePreorder.java，插入方法：

public static void insert(BinaryTree root, int data){
if(data > root.getData()){
if(root.getRight() == null){
root.setRight(new BinaryTree(data));
}else{
insert(root.getRight(), data);
}
}else{
if(root.getLeft() == null){
root.setLeft(new BinaryTree(data));
}else{
insert(root.getLeft(), data);
}
}
}

3、遍历方法：

/**
* 先序遍历
* @param root
*/
public static void preOrder(BinaryTree root){
if(root == null){
return;
}
//遍历出数据
System.out.print(root.getData() + "-");
if(root.getLeft() != null){
preOrder(root.getLeft());
}
if(root.getRight() != null){
preOrder(root.getRight());
}
}

/**
* 中序遍历
* @param root
*/
public static void inOrder(BinaryTree root){
if(root == null){
return;
}
if(root.getLeft() != null){
preOrder(root.getLeft());
}
//遍历出数据
System.out.print(root.getData() + "-");
if(root.getRight() != null){
preOrder(root.getRight());
}
}

/**
* 后序遍历
* @param root
*/
public static void suffixOrder(BinaryTree root){
if(root == null){
return;
}
if(root.getLeft() != null){
preOrder(root.getLeft());
}
if(root.getRight() != null){
preOrder(root.getRight());
}
//遍历出数据
System.out.print(root.getData() + "-");
}

4、测试

public static void main(String[] str) {
int[] array = { 36, 10, 35, 66, 16, 18, 90, 76, 9, 20 };
BinaryTree root = new BinaryTree(array[0]); // 创建二叉树
for (int i = 1; i < array.length; i++) {
insert(root, array[i]); // 向二叉树中插入数据
}
System.out.println("先根遍历：");
preOrder(root);
System.out.println();
System.out.println("中根遍历：");
inOrder(root);
System.out.println();
System.out.println("后根遍历：");
suffixOrder(root);
}

先根遍历：
36-10-9-35-16-18-20-66-90-76-

10-9-35-16-18-20-36-66-90-76-

10-9-35-16-18-20-66-90-76-36-

#### 先序遍历、中序遍历、后序遍历（二叉树）

2017-07-21 09:27:17

#### 用java构建二叉排序树，实现先序，中序和后序遍历

2016-09-07 23:00:13

#### 先序遍历、中序遍历、后序遍历序列的详解

2017-06-26 15:08:38

#### 建立二叉排序树，输出其先序遍历，中序遍历，后序遍历

2018-01-06 20:11:39

#### 已知中序遍历序列和后序遍历序列，求先序遍历

2015-07-26 10:22:41

#### 已知先序遍历和中序遍历 如何求后序遍历？

2014-04-04 14:30:25

#### 二叉树中的先序遍历、中序遍历和后序遍历关系

2016-11-17 14:24:33

#### 二叉排序树的建立、先序/中序/后序遍历、查找

2015-10-04 12:05:33

#### 算法学习 - 树的三种遍历（递归实现）先序遍历，中序遍历，后序遍历

2014-11-23 01:32:51

#### 二叉树的遍历代码（先序遍历,中序遍历，后序遍历）

2016-11-26 16:40:50