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

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-

• 本文已收录于以下专栏：

## 二叉树前序，中序，后序遍历详解

• prince_jun
• 2012年07月09日 15:28
• 56371

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

• u013326239
• 2016年11月26日 16:40
• 499

## 树的先序、中序和后序遍历方式

• eric_zl_zhang
• 2012年06月13日 16:56
• 85939

## 二叉树系列(1)已知二叉树的中序遍历和前序遍历，如何求后序遍历

(昨晚HULU的笔试题之一，被鄙视的惨，面对向往已久的公司，交出苍白无力的答卷，心里像被剜了一刀。再多解释都是苍白。我鄙视我自己。现在开始舔舐伤口。) 假设有棵树，长下面这个样子，它的前序遍历，中...
• feliciafay
• 2011年09月24日 11:04
• 61793

## 二叉树遍历（前序、中序、后序、层次遍历、深度优先、广度优先）

• My_Jobs
• 2015年02月03日 16:10
• 15892

## 算法：二叉树的先序遍历、中序遍历、后序遍历（递归及非递归方式）的java代码实现

• jssongwei
• 2016年03月03日 17:33
• 6951

## 二叉树前序、中序、后序遍历非递归写法的透彻解析

• zhangxiangDavaid
• 2014年07月06日 22:14
• 65110

## 根据后序和中序遍历输出先序遍历

think: 1自己或许应该转变思想，自己一直将树的部分当做一种结构来记忆使用，但基本经常出现错误，或许树的知识点也应该作为一种解决问题的思想来理解，而不是一再的死记硬背模板，要学会灵活的变通和变化...
• BlessingXRY
• 2017年03月07日 22:12
• 1005

## 二叉树前序、中序、后序遍历的相互求法

• u014536527
• 2016年03月30日 02:45
• 5753

## 根据输入的数据，建立二叉排序树，并求先、中、后序遍历

#include #include #define MAX 1000 typedef struct node{ int d; struct node *lchild,*rchild; }T...
• longvs
• 2013年08月25日 23:02
• 2709

举报原因： 您举报文章：生成二叉排序树并先序遍历、中序遍历、后序遍历 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)