⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 winatree.java~94~

📁 av平衡树
💻 JAVA~94~
字号:
import java.awt.Toolkit;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;

/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2006</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */
public class WinATree extends JFrame{
    boolean packFrame = false;
    JPanel contentPane;
    BorderLayout borderLayout1 = new BorderLayout();
    JMenuBar menu = new JMenuBar();
     JMenu file = new JMenu();
    JMenu aTree = new JMenu();
    JMenu bTree = new JMenu();
    JMenuItem addA = new JMenuItem();
    JMenuItem deleteA = new JMenuItem();
    JMenuItem addB = new JMenuItem();
    JMenuItem deleteB = new JMenuItem();
    JMenuItem searchA = new JMenuItem();
    JMenuItem searchB = new JMenuItem();
    JMenuItem creatA = new JMenuItem();
    JMenuItem creatB = new JMenuItem();
    JMenuItem exitM = new JMenuItem();
    JMenuItem deleteAl = new JMenuItem();
    ATree at;
    /**
     * Construct and show the application.
     */
    public WinATree() {
        try {
           setDefaultCloseOperation(EXIT_ON_CLOSE);
           jbInit();
       } catch (Exception exception) {
           exception.printStackTrace();
       }

        setVisible(true);
    }
    private void jbInit() throws Exception {
            contentPane = (JPanel) getContentPane();
            contentPane.setLayout(borderLayout1);
        this.setJMenuBar(menu);
        setSize(new Dimension(400, 300));
            setTitle(" Tree");
            file.setText("file") ;
        aTree.setText("AVl Tree");
        bTree.setText("BTree");
        addA.setText("add");
        addA.addMouseListener(new WinATree_addA_mouseAdapter(this));
        deleteA.setText("delete");
        deleteA.addMouseListener(new WinATree_deleteA_mouseAdapter(this));
        addB.setText("add");
        deleteB.setText("delete");
        searchA.setText("search");
        searchA.addMouseListener(new WinATree_searchA_mouseAdapter(this));
        searchB.setText("search");
        creatA.setText("creatAVlTree");
        creatB.setText("creatBTree");
        deleteAl.setText("deiete all");
        deleteAl.addMouseListener(new WinATree_deleteAl_mouseAdapter(this));
        exitM.setText("exit");
        exitM.addMouseListener(new WinATree_exitM_mouseAdapter(this));
        menu.add(file) ;
        menu.add(aTree);
        menu.add(bTree);
        bTree.setVisible(false) ;
        aTree.setVisible(false) ;
        aTree.add(addA);
        aTree.add(deleteA);
        aTree.add(searchA);
        aTree.add(deleteAl);
        bTree.add(addB);
        bTree.add(deleteB);
        bTree.add(searchB);
        file.add(creatA);
        file.add(creatB);
        file.add(exitM);
        creatA.addActionListener(new CreatA_mouseAdapter ()) ;
        creatB.addActionListener(new CreatB_mouseAdapter ()) ;
       // at=new ATree() ;
       /* at.Insert(1);
         at.Insert(2);
          at.Insert(3);
           at.Insert(4);
           at.Insert(87);at.Insert(7);at.Insert(5);*/
    }
    public void paint(Graphics g){
     super.paint(g) ;
     if(at!=null){
         int h = at.High();
         int l = (int)Math.pow(2,h)-1 ;
         Queue qu = new Queue();
         //ATNode atn[]=new ATNode[ l]  ;

         ATNode p = at.root,q=new ATNode() ;
         if (p != null) {
             boolean b[] = new boolean[l];
             for (int i = 0; i < l; i++)
                 b[i] = true;
             int x[] = new int[l];
             if(h>1){
                 //x[l - h - 1] = 0;
                 for (int i = (int)Math.pow(2,h-1); i > 0; i--)
                     x[l - i] = 80 + x[l - i - 1];
                 for (int i = (int)Math.pow(2,h-1)-2; i >= 0; i--)
                     x[i] = (x[i * 2 + 2] + x[i * 2 + 1]) / 2;
             }else x[0]=10;
             qu.add(p);
             int n = 0;
             int y;
           //  for(int i=0;i<l;i++){
            //      y = 30 *(int)(Math.log(i+1) /Math.log(2) ) + 70;
             //     g.drawString("0", x[i], y);
           //  }

            while (!qu.isEmpty() ) {
                 q=qu.delete() ;


                 y = 30 *(int)(Math.log(n+1) /Math.log(2) ) + 70;
                 while (!b[(n - 1) / 2]||!b[n]) {
                     b[n] = false;
                     n++;
                 }
                 g.setColor(Color.red ) ;
                 g.drawString(Double.toString(q.data)+"  "+Double.toString(q.bf ), x[n]-5, y+5);
                 g.setColor(Color.darkGray ) ;
                 if (q.LeftChild != null&2 * n + 1< l) {
                     qu.add(q.LeftChild);
                     g.drawLine(x[n], y+5, x[2 * n + 1], y + 25);
                 } else
                 if (2 * n + 1 < l)
                     b[2 * n + 1] = false;

                 if (q.RightChild != null&2 * n + 2 < l) {
                     qu.add(q.RightChild);
                     g.drawLine(x[n], y+5, x[2 * n + 2], y + 25);
                 } else
                 if (2 * n + 2 < l)
                     b[2 * n + 2] = false;
                n++;

             }
         }

     }
    }
    /**
     * Application entry point.
     *
     * @param args String[]
     */
    public static void main(String[] args) {
                new WinATree();
            }
    class CreatA_mouseAdapter implements ActionListener {
        public void actionPerformed(ActionEvent e)
        {
            at=new ATree() ;
         aTree.setVisible(true) ;
           bTree.setVisible(false) ;
       }
   }


    public void addA_mousePressed(MouseEvent e) {
       try{ String st=JOptionPane.showInputDialog("Enter the data which you  want add:") ;
           double d = Double.parseDouble(st.trim());
           at.Insert(d);

           repaint();
       }catch(Exception e1){JOptionPane.showMessageDialog(null,"bad input") ;}
    }

    public void deleteA_mousePressed(MouseEvent e) {
        try{ String st=JOptionPane.showInputDialog("Enter the data which you want delete:") ;
                   double d = Double.parseDouble(st.trim());
                   at.Delete(d) ;

                   repaint();
       }catch(Exception e1){repaint();JOptionPane.showMessageDialog(null,"bad input") ;}
    }

    public void searchA_mousePressed(MouseEvent e) {
        try{ String st=JOptionPane.showInputDialog("Enter the data which you want delete:") ;
                          double d = Double.parseDouble(st.trim());
                          if(at.Search(d))
       JOptionPane.showMessageDialog(null,d+"  is exist") ;
   else JOptionPane.showMessageDialog(null,d+"  is not exist") ;
                          repaint();
       }catch(Exception e1){repaint();JOptionPane.showMessageDialog(null,"bad input") ;}
    }

    public void deleteAl_mousePressed(MouseEvent e) {
at.DeleteAll() ;
        repaint();
    }

    public void exitM_mousePressed(MouseEvent e) {
System.exit(0) ;
    }

    class CreatB_mouseAdapter implements ActionListener {
      public void actionPerformed(ActionEvent e)
      {          at=new ATree() ;
       bTree.setVisible(true) ;
         aTree.setVisible(false) ;
     }
 }

}


class WinATree_exitM_mouseAdapter extends MouseAdapter {
    private WinATree adaptee;
    WinATree_exitM_mouseAdapter(WinATree adaptee) {
        this.adaptee = adaptee;
    }

    public void mousePressed(MouseEvent e) {
        adaptee.exitM_mousePressed(e);
    }
}


class WinATree_deleteAl_mouseAdapter extends MouseAdapter {
    private WinATree adaptee;
    WinATree_deleteAl_mouseAdapter(WinATree adaptee) {
        this.adaptee = adaptee;
    }

    public void mousePressed(MouseEvent e) {
        adaptee.deleteAl_mousePressed(e);
    }
}


class WinATree_searchA_mouseAdapter extends MouseAdapter {
    private WinATree adaptee;
    WinATree_searchA_mouseAdapter(WinATree adaptee) {
        this.adaptee = adaptee;
    }

    public void mousePressed(MouseEvent e) {
        adaptee.searchA_mousePressed(e);
    }
}


class WinATree_deleteA_mouseAdapter extends MouseAdapter {
    private WinATree adaptee;
    WinATree_deleteA_mouseAdapter(WinATree adaptee) {
        this.adaptee = adaptee;
    }

    public void mousePressed(MouseEvent e) {
        adaptee.deleteA_mousePressed(e);
    }
}


class WinATree_addA_mouseAdapter extends MouseAdapter {
    private WinATree adaptee;
    WinATree_addA_mouseAdapter(WinATree adaptee) {
        this.adaptee = adaptee;
    }

    public void mousePressed(MouseEvent e) {
        adaptee.addA_mousePressed(e);
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -