디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

한쿡을 좀먹는 지역감정을 한반도에서 몰아내는게 어떻겠음?

세브(121.131) 2009.12.12 16:16:22
조회 110 추천 0 댓글 3


그런의미에서 잡아로 BST를 구현했음

클래스이름은 RbTree지만 뤠드브랙트리아니고여 걍BST임

뭔가 코오드에 우아함이 부족한것같음 읭읭

----


public class RbTree {
    public RbTree() {}
   
    public Comparable find(Comparable data) {
        Node node = find(data, root);
       
        if (node == null)
            return null;
       
        return node.data;
    }
   
    public void add(Comparable data) {
        root = add(data, root);
    }
   
    public String inorder() {
        return String.format("[%s]", inorder(root));
    }
   
    public void remove(Comparable data) {
        root = remove(data, root);
    }
   
    private static interface Runnable2 {
        void run(Comparable data);
    }
   
    private static class Node {
        public Comparable data;
        public Node left;
        public Node right;
        public Node(Comparable data) {
            this.data = data;
            this.left = this.right = null;
        }
    }
   
    private Node root = null;
   
    private Node find(Comparable data, Node bst) {
        if (bst == null)
            return null;
       
        int result = data.compareTo(bst.data);
       
        if (result == 0)
            return bst;
        else if (result < 0)
            return find(data, bst.left);
        else
            return find(data, bst.right);
    }
   
    private Node add(Comparable data, Node bst) {
        if (bst == null)
            return new Node(data);
       
        int result = data.compareTo(bst.data);
       
        if (result < 0)
            bst.left = add(data, bst.left);
        else if (result > 0)
            bst.right = add(data, bst.right);
       
        return bst;
    }
   
    private String inorder(Node bst) {
        if (bst == null)
            return "";
       
        return String.format("%s %s %s", inorder(bst.left), bst.data, inorder(bst.right));
    }
   
    private Node removeFirst(Node bst, Runnable2 callback) {
        if (bst == null)
            return null;
       
        if (bst.left == null)
        {
            callback.run(bst.data);
            return bst.right;
        }
       
        bst.left = removeFirst(bst.left, callback);
        return bst;
    }
   
    private Node remove(Comparable data, final Node bst) {
        if (bst == null)
            return null;
       
        int result = data.compareTo(bst.data);
       
        if (result < 0)
        {
            bst.left = remove(data, bst.left);
            return bst;
        }
        else if (result > 0)
        {
            bst.right = remove(data, bst.right);
            return bst;
        }
       
        if (bst.left == null && bst.right == null)
            return null;
        else if (bst.left != null && bst.right == null)
            return bst.left;
        else if (bst.left == null && bst.right != null)
            return bst.right;
       
        Runnable2 callback = new Runnable2() {
            @Override
            public void run(Comparable data) {
                // TODO Auto-generated method stub
                bst.data = data;
            }
        };
        bst.right = removeFirst(bst.right, callback);
       
        return bst;
    }
   
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
       
        RbTree bst = new RbTree();
        bst.add(12);
        bst.add(26);
        bst.add(67);
        bst.add(19);
        bst.add(20);
        bst.add(9);
        bst.add(4);

        System.out.println(bst.inorder());
        System.out.println(bst.find(22));
        System.out.println(bst.find(38));
       
        bst.remove(12);
        bst.remove(26);
        System.out.println(bst.inorder());
       
        return;
    }

}

// EOF

추천 비추천

0

고정닉 0

0

원본 첨부파일 1

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 가족과 완벽하게 손절해야 할 것 같은 스타는? 운영자 24/06/24 - -
163509 아바타 보고 왔음.ㅋ [10] Rei@디씨갤로그로 이동합니다. 09.12.20 158 0
163508 횽들 살려주세요 도움이필요해여 [5] 귀족불곰갤로그로 이동합니다. 09.12.20 72 0
163507 근데 코딩이나 워드 작업 안 한다고 치고...PC를 버리는 게 가능함? [11] 오사카(221.153) 09.12.20 159 0
163506 구석횽 얘기 듣다가 생각난건데... 이런 프로그램 어때? [5] 물속의다이아갤로그로 이동합니다. 09.12.20 110 0
163505 algo 횽은 봅니다. [9] rntjr갤로그로 이동합니다. 09.12.20 116 0
163504 간단한 C언어 질문..궁금함. [9] CCC(203.237) 09.12.20 118 0
163503 아래 고민상담자는 구석횽의 말을 적극적으로 경청합니다. 물속의다이아갤로그로 이동합니다. 09.12.20 52 0
163502 잠 안 자고 프갤질 하다가 갑자기 든 생각 [5] algo갤로그로 이동합니다. 09.12.20 99 0
163501 횽들의 진정한 진로상담? 을 원합니다. [8] 고민상담자(59.14) 09.12.20 148 0
163499 Sentiment Analysis [14] algo갤로그로 이동합니다. 09.12.20 125 0
163498 한국도 이제 태양열 자가 발전을 도입할떄도 된거 같은데요 [6] 고자(211.223) 09.12.20 99 0
163497 요즘 생각중인건대 말이지.. 이런 프로그램 어때? [12] rntjr갤로그로 이동합니다. 09.12.20 229 0
163496 고정닉 다시 만들어써\r\n [5] 그물질갤로그로 이동합니다. 09.12.20 75 0
163495 마약 중독자와 게임 중독자의 뇌 활성 사진 [2] 고자(211.223) 09.12.20 235 0
163493 스타하면 마약중독자와 뇌활성화가 같아진다던데 ㄷㄷㄷ [9] 고자(211.223) 09.12.20 197 0
163490 취미로 프로그래밍 한번 해보고 싶음. [10] ㅇㅅㅇ(220.92) 09.12.20 238 0
163489 객체지향? [12] 가상현실갤로그로 이동합니다. 09.12.20 233 0
163487 지금 마소 홈페이지 나만 않들어가지는 거임? [1] 구루구루(115.21) 09.12.20 55 0
163485 왜 구석횽 글이 자꾸 지워지는 거야 [2] algo갤로그로 이동합니다. 09.12.20 60 0
163484 진짜 간단한 php-db연동문 에러때문에;; [4] 아아아아ㅏ(123.142) 09.12.20 119 0
163481 저번에 fflush 잘못 쓰인다고 올린 글 말야 [5] URA!갤로그로 이동합니다. 09.12.20 310 0
163477 자바 질문있어요 [11] 자방(125.177) 09.12.20 181 0
163476 힝..외롭다... [11] CCC(203.237) 09.12.20 205 0
163474 Daftppunk - Digital Love 좇문가갤로그로 이동합니다. 09.12.20 71 0
163473 lego mindstorm (ㄹ보랩) 질문점.. 급해영 도와줘용 ㅠㅠ 이응이응(220.119) 09.12.20 146 0
163472 질문좀.,.. 급해여 ㅠㅠ [6] ㅇㅁㅁ(58.234) 09.12.20 153 0
163471 간만에 설레여 보는 Bo Peep.tp 숙신갤로그로 이동합니다. 09.12.20 115 0
163468 ㅁㅁ횽 피아노 글 잘 봤습니다 [2] algo갤로그로 이동합니다. 09.12.20 95 0
163467 형들 책보고 독학중인데 궁금한게 이쓰요 [1] 허허벌판갤로그로 이동합니다. 09.12.20 138 0
163466 횽아들 간단한 궁금한거 사과갤로그로 이동합니다. 09.12.20 88 0
163465 getchar와 scanf의 차이점좀알려주세요 [4] Scantid갤로그로 이동합니다. 09.12.20 154 0
163464 로보랩 질문점 .. 컹ㅋ어(220.119) 09.12.20 118 0
163463 진짜 프로그래밍 개초보인데 머부터 시작할까요? [6] 콩키갤로그로 이동합니다. 09.12.20 250 0
163462 프갤 횽아들 진지한 질문할께요.. 정통과(210.94) 09.12.20 83 0
163461 illustrator아는 잉여있음??ㅠㅠㅠㅠㅠㅠㅠ [1] 꼴릿한겆이갤로그로 이동합니다. 09.12.20 120 0
163460 로보랩 질문점영ㅠㅠ [2] 컹ㅋ어(220.119) 09.12.20 103 0
163459 윈도우7 에서 비주얼 스튜디오 6.0 설치되나여? [5] 프프프프(110.35) 09.12.20 724 0
163457 횽들아 C 질문좀 ㅜㅜ [2] 뭉어갤로그로 이동합니다. 09.12.20 145 0
163455 능력자횽아들 씨언어 해석좀 해주세혉 [1] 돌대갈(220.73) 09.12.20 196 0
163452 프로세스 이름으로 프로세스 번호 알아내기 [4] 수학의정석(115.21) 09.12.20 251 0
163450 취미로 피아노를 배우세요. 초대합니다. [37] ㅁㅁ(125.146) 09.12.20 258 0
163448 이제 시험 하나 남았다. JuEUS-U갤로그로 이동합니다. 09.12.20 73 0
163444 횽아들 궁금한게 생겨서 말야.. [3] 허허벌판갤로그로 이동합니다. 09.12.20 105 0
163439 여러분! 살롱해요... [3] 물속의다이아갤로그로 이동합니다. 09.12.20 134 0
163438 한글을 인자로 isdigt [9] 허접놈(123.109) 09.12.20 188 0
163437 허버트슈이트가쓴 책아시는분 [1] 스캔티드(121.151) 09.12.20 116 0
163436 취업 앞두고 몇가지 질문 있습니다. [12] 고민남(221.151) 09.12.20 318 0
163435 게임 서버 프로그래머 될려면? [4] 와인드엉(125.135) 09.12.20 197 0
163434 주말을 위로하는 짤.jpg [2] 숙신갤로그로 이동합니다. 09.12.20 169 0
163433 오전에 한 잉여짓 [4] DMW(125.138) 09.12.20 184 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2