二叉树的创建和使用

import java.util.Scanner;

/**
 * 二叉排序树的创建和使用
 *  7 10 8 15 7 11 58 9 小的放左边大的放右边,中序遍历则为排序,称为树的排序
 * @author lenovo
 *
 */
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();//用例
        for(int i=0;i<n;i++){
            Tree t = new Tree();
            int m=sc.nextInt();
            int e;
            for(int j=0;j<m;j++){
                e = sc.nextInt();
                TreeNode node = new TreeNode(e);
                t.setRoot(t.insert(t.getRoot(), node));
            }
            System.out.println("中序遍历");
            t.coreorder(t.getRoot());
            
        }
        
        
    }

}
class Tree{
    TreeNode root;
    public Tree(){
        this.root = null;
    }
    public TreeNode getRoot() {
        return root;
    }
    public void setRoot(TreeNode root) {
        this.root = root;
    }
    //构造数,令p为根,q为插入的点,返回值类型为TreeNode点
    public TreeNode insert(TreeNode p,TreeNode q){
        if(p==null){
            p=q;
        }else{
            if(p.getData()>q.getData()){
                p.setLeft(insert(p.getLeft(),q));//巧用递归
            }else{
                p.setRight(insert(p.getRight(),q));
            }
        }
        return p;
    }
    
    //前序遍历
    public void preorder(TreeNode p){
        if(p==null)
            return;
        System.out.print(p.getData()+" ");
        preorder(p.getLeft());
        preorder(p.getRight());
        
    }
    //中序遍历
    public void coreorder(TreeNode p){
        if(p==null)
            return;
        coreorder(p.getLeft());
        System.out.print(p.getData()+" ");
        coreorder(p.getRight());
        
    }
    //后续遍历
    public void postorder(TreeNode p){
        if(p==null)
            return;
        postorder(p.getLeft());
        postorder(p.getRight());
        System.out.print(p.getData()+" ");
    }
    
}
class TreeNode{
    private int data;
    private TreeNode left;
    private TreeNode right;
    
    public TreeNode(){
        this.left = null;
        this.right = null;
    }
    
    public TreeNode(int data){
        this.data = data;
        this.left = left;
        this.right = right;
    }

    public int getData() {
        return data;
    }

    public void setData(int data) {
        this.data = data;
    }

    public TreeNode getLeft() {
        return left;
    }

    public void setLeft(TreeNode left) {
        this.left = left;
    }

    public TreeNode getRight() {
        return right;
    }

    public void setRight(TreeNode right) {
        this.right = right;
    }
}
1
9
1 4 7 8 9 6 3 2 5
中序遍历
1 2 3 4 5 6 7 8 9 
View Code
原文地址:https://www.cnblogs.com/zoulingjin/p/8676534.html