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

📄 btapplet.java

📁 平衡二叉树 生成
💻 JAVA
字号:

// Source File Name:   BTApplet.java

import java.applet.Applet;
import java.awt.*;
import java.util.Random;
import java.util.StringTokenizer;

public class BTApplet extends Applet
{

    public void init()
    {
        setLayout(new BorderLayout());
        panel = new BTPanel(this);
        add("Center", panel);
        Panel panel1 = new Panel();
        add("South", panel1);
        
        panel1.add(TFdata = new TextField(2));
        panel1.add(BTinsert = new Button("INSERT"));
        panel1.add(BTremove = new Button("DELETE"));
        panel1.add(BTlocate = new Button("FIND"));
        panel1.add(BTdelall = new Button("DELETE ALL"));
        panel1.add(CBAVL = new Checkbox("AVL"));
        panel1.add(LBpick = new Label("PICK "));
        panel1.add(CLpick = new Choice());
        panel1.add(BTTraverse = new Button("TRAVERSE"));
        CLpick.addItem("INORDER");
        CLpick.addItem("PREORDER");
        CLpick.addItem("POSTORDER");
        CBAVL.setState(true);
        panel.tree.AVLbalanced = true;
        treeInOrder = false;
    }

    public void readData()
    {
    	if(dataLoaded == true)
    		return;
    	String tempString = null;
    	String nodes = null;
    	int length = 0;
    	int number = 0;
    	nodes = getParameter("nodes");
    	if(nodes != null){
        	StringTokenizer stringtokenizer = new StringTokenizer(nodes, ",");
            for(int i = 0; i <12&& stringtokenizer.hasMoreTokens();i++){
                tempString = stringtokenizer.nextToken().trim();
                length = tempString.length();
                if(length < 3){
                	try{
                		number = Integer.parseInt(tempString);
                		if(i < 0) continue;
                    	tempString = length == 2? tempString : "0" + tempString; 
                    	BTData btdata = new BTData(tempString);
                        panel.tree.insert(btdata);
                        panel.placeNodes();
                	}catch(NumberFormatException e ){
                	}
                }
                System.out.println(tempString);
            }
    	}
    	dataLoaded = true;
    }

    public String getText()
    {
    	/*
        text = TFdata.getText();
        if(text.trim().length() == 0)
            text = getRandomText();
        if(text.trim().length() == 1)
            text = "0" + text;
        if(text.trim().length() > 2)
            text = text.substring(0, 2);
        return text;
        */
        String text = TFdata.getText();
        text = text.trim();
        
        if(text.length() == 0)
            return null;
        else
        if(text.length() == 1)
            text = "0" + text;
        else
        if(text.length() > 2)
            text = null;
        
        try {
            int i = Integer.parseInt(text);
            if(i == 0) text = "00";
            //if(i < 0)
            //    text = null;        	
        }catch(NumberFormatException e){
        		text = null;
        }
        return text;
    }

    public String getRandomText()
    {
        new Random();
        int i = (int)(99D * Math.random());
        text = String.valueOf(i);
        return text;
    }

    public boolean action(Event event, Object obj)
    {
        panel.resetModes();
        if(event.target == BTlocate)
        {
            text = getText();
            if(text != null){
                BTData btdata = new BTData(text);
                panel.locate(btdata);
                btdata = null;            	
            }
            TFdata.setText("");
            return true;
        }
        if(event.target == BTinsert)
        {
            text = getText();
            // Added to make sure that value is > 0;
            System.out.println("text value is " + text);
            if(text != null && Integer.parseInt(text) < 0)
            	return true;
            
            if(text != null){
                BTData btdata1 = new BTData(text);
                panel.insert(btdata1);
                btdata1 = null;            	
            }
            TFdata.setText("");
            return true;
        }
        if(event.target == BTremove)
        {
            text = getText();
            if(text != null){
                BTData btdata2 = new BTData(text);
                panel.remove(btdata2);
                btdata2 = null;            	
            }
            TFdata.setText("");
            return true;
        }
        if(event.target == BTdelall)
        {
            panel.delall();
            TFdata.setText("");
            return true;
        }
        if(event.target == BTTraverse)
        {
        	panel.traverse(CLpick.getSelectedIndex());
        }
        if(event.target == CBAVL)
        {
            panel.tree.AVLbalanced = CBAVL.getState();
            if(panel.tree.AVLbalanced)
                panel.balance();
            panel.resetNodes();
            playSound(2);
            return true;
        } else
        {
            return false;
        }
    }

    public void start()
    {
        panel.start();
        readData();
    }

    public void stop()
    {
        panel.stop();
    }

    public void playSound(int i)
    {
        switch(i)
        {
        case 1: // '\001'
            play(getCodeBase(), "Drip.au");
            return;

        case 3: // '\003'
            play(getCodeBase(), "Miss.au");
            return;

        case 2: // '\002'
            play(getCodeBase(), "Good.au");
            return;
        }
    }

    public BTApplet()
    {
    	System.out.println("in BTApplet ");
    }

    static final int DRIP = 1;
    static final int GOOD = 2;
    static final int MISS = 3;
    BTPanel panel;
    Button BTTraverse;
    Button BTinsert;
    Button BTremove;
    Button BTlocate;
    Button BTdelall;
    TextField TFdata;
    String text;
    Checkbox CBAVL;
    Label LBpick;
    Choice CLpick;
    boolean treeInOrder;
    boolean dataLoaded;
}

⌨️ 快捷键说明

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