【二叉搜索树】简单二叉搜索树的Java实现,还没添加很多功能

正文之前

重温算法,今天看了下《算法导论》,二叉搜索树的内容,总算没有以前看的时候的那种晦涩感了。。。明天继续加油!!!今天大概用Java实现了下二叉搜索树的建立和输出,至于检索这个简单功能就不说了,插入功能也实现了。就差个删除了~emmm 明天上午搞完它!!!

这个是Java的《数据结构》

要电子书的可以找我。。。留下邮箱即可。。

正文

import java.util.Arrays;
import java.util.Random;
import java.util.LinkedList;
import java.util.Queue;

class node{
    private int key;
    node leftChild;
    node rightChild;
    node parent;
    node(int x){
        this.key=x;
    }
    node(){};
    public node getLeftChild(){
        return this.leftChild;
    }
    public node getRightChild(){
        return this.rightChild;
    }
    public int getKey(){
        return this.key;
    }
    public node getParent(){
        return this.parent;
    }
}

class Tree{
    node head;
    int size;
    Tree(){this.size = 0;};
    public node getHead(){
        return this.head;
    }
    public void walk(Queue<String> queue,node par){
        if(par.getLeftChild()!=null){
            queue.add("* "+par.getLeftChild().getKey()+ " ");
            walk(queue,par.getLeftChild());
        }
        if (par.getRightChild()!=null){
            queue.add("* "+par.getRightChild().getKey() + " ");
            walk(queue,par.getRightChild());
        }
    }
    public String toString(){
        System.out.print("输出树形: ");
        Queue<String> queue = new LinkedList<>();
        String out = "";
        if (this.head!=null){
            String one = "ok";
            walk(queue,this.head);
            while(one!=null) {
                one = queue.poll();
                if(one!=null)
                    out += one;
            }
            queue.add("* "+this.head.getKey()+"\n");

        }
        return out;
    }
}

public class TestTree{
    public static void insertSort(int []arr, int n){
        for (int i = 1; i < n; ++i)
        {
            int e = arr[i];
            int j=i;
            for (; j > 0; --j)
            {
                if (e < arr[j-1])
                    arr[j] = arr[j-1];
                else
                    break;
            }
            arr[j] = e;
        }
    }
    public static void insertToTree(Tree tree,int x){
        tree.size+=1;
        node newnode = new node(x);
        node tmp = tree.getHead();
        if ( tmp==null)
            tree.head = newnode;
        while(tmp!=null) {
            if (x < tmp.getKey()) {
                if (tmp.getLeftChild()==null || x > tmp.getLeftChild().getKey()) {
                    newnode.parent = tmp;
                    newnode.leftChild = tmp.getLeftChild();
                    tmp.leftChild = newnode;
                    return;
                }
                else
                    tmp = tmp.getLeftChild();
            }
            else {
                if ( tmp.getRightChild()==null || x > tmp.getRightChild().getKey()) {
                    newnode.parent = tmp;
                    newnode.rightChild = tmp.getRightChild();
                    tmp.rightChild = newnode;
                    return;
                }
                else
                    tmp = tmp.getRightChild();
            }
        }
    }
    public static Tree generateTree(int[] arr){
        Tree tree = new Tree();
//        insertSort(arr,arr.length);
        int head = arr.length/2;
        insertToTree(tree,arr[head]);
        for (int i=0;i<arr.length;++i) {
            if (i!=head) {
                insertToTree(tree,arr[i]);
            }
        }
        return tree;
    }
    public static void main(String[] args) {
        Random rdm = new Random(System.currentTimeMillis());
        int [] randomArr = new int[20];
        for(int i=0;i<20;i++)
            randomArr[i] = Math.abs(rdm.nextInt())%50 +1;
        Tree tree = generateTree(randomArr);
        System.out.println(Arrays.toString(randomArr));
        System.out.println(tree.toString());
    }
}

正文之后

溜了溜了~~~回去玩手机去!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,825评论 4 377
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,887评论 2 308
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 112,425评论 0 255
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,801评论 0 224
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,252评论 3 299
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,089评论 1 226
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,216评论 2 322
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 31,005评论 0 215
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,747评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,883评论 2 255
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,354评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,694评论 3 265
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,406评论 3 246
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,222评论 0 9
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,996评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,242评论 2 287
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 36,017评论 2 281

推荐阅读更多精彩内容