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

210人阅读 评论(0)

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-

0
0

* 以上用户言论只代表其个人观点，不代表CSDN网站的观点或立场
个人资料
• 访问：7171次
• 积分：229
• 等级：
• 排名：千里之外
• 原创：15篇
• 转载：6篇
• 译文：0篇
• 评论：1条
文章分类
阅读排行
评论排行