zoukankan      html  css  js  c++  java
  • 二叉树的创建和使用

    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
  • 相关阅读:
    C语言实现用户输入
    QQ头像一键添加校徽
    csu oj Infected Computer 1427
    质数个数
    stl实现结构体排序关键语法要点(sort)
    理解 PHP 中的 Streams
    几款主流PHP框架的优缺点评比
    8个开发必备的PHP功能
    5个开发人员不应该错过的最好跨平台PHP编辑器
    推荐五款优秀的PHP代码重构工具
  • 原文地址:https://www.cnblogs.com/zoulingjin/p/8676534.html
Copyright © 2011-2022 走看看