亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? btree.java

?? 用JAVA實現了,將DB裝入內存,內存由DBMS控制,實現簡單數據庫的創建、數據表的創建、記錄插入、查詢以及表的刪除。
?? JAVA
字號:
package org.kdb.util;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.NoSuchElementException;

/**

 * Date: 2007-10-23
 * Time: 10:58:26
 */

/**
 * jBixbe debuggee: test insert and delete operation of a balanced tree data
 * structure. Using integer values read from keyboard as tree elements.
 *
 * @author ds-emedia
 */
public class BTree<T extends Comparable<T>> {

    private static BTree<Integer> tree = new BTree<Integer>();

    private static BufferedReader reader = new BufferedReader(
            new InputStreamReader(System.in));

    public static void main(String args[]) throws IOException {

        System.out.println("test balanced tree operations");
        System.out.println("*****************************");

        String input;
        Integer value;

        do {
            input = stringInput("please select: [i]nsert, [d]elete, [e]xit");
            switch (input.charAt(0)) {
                case 'i':
                    value = Integer.parseInt(stringInput("insert: "), 10);
                    if (tree.isMember(value)) {
                        System.out.println("value " + value + " already in tree");
                    } else {
                        tree.insert(value);
                    }
                    break;
                case 'd':
                    value = Integer.parseInt(stringInput("delete: "), 10);
                    if (tree.isMember(value)) {
                        tree.delete(value);
                    } else {
                        System.out.println(value + " not found in tree");
                    }
                    break;
            }
        } while ((input.charAt(0) != 'e'));
    }

    private static String stringInput(String inputRequest) throws IOException {
        System.out.println(inputRequest);
        return reader.readLine();
    }

    /* +++++++++++ instance declarations +++++++++++ */

    private Node root;

    /**
     * Creates an empty balanced tree.
     */
    public BTree() {
        root = null;
    }

    /**
     * Creates a balances tree using the given node as tree root.
     */
    public BTree(Node root) {
        this.root = root;
    }

    /**
     * Inserts an element into the tree.
     */
    public void insert(T info) {
        insert(info, root, null, false);
    }

    /**
     * Checks whether the given element is already in the tree.
     */
    public boolean isMember(T info) {
        return isMember(info, root);
    }

    /**
     * Removes an elememt from the tree.
     */
    public void delete(T info) {
        delete(info, root);
    }

    /**
     * Returns a text representation of the tree.
     */
    public String toString() {
        return inOrder();
    }

    /**
     * Returns all elements of the tree in in-order traversing.
     */
    public String inOrder() {
        return inOrder(root);
    }

    /**
     * Returns all elements of the tree in pre-order traversing.
     */
    public String preOrder() {
        return preOrder(root);
    }

    /**
     * Returns all elements of the tree in post-order traversing.
     */
    public String postOrder() {
        return postOrder(root);
    }

    /**
     * Returns the height of the tree.
     */
    public int getHeight() {
        return getHeight(root);
    }

    private void insert(T info, Node node, Node parent, boolean right) {

        if (node == null) {
            if (parent == null) {
                root = node = new Node(info, parent);
            } else if (right) {
                parent.right = node = new Node(info, parent);
            } else {
                parent.left = node = new Node(info, parent);
            }
            restructInsert(node, false);
        } else if (info.compareTo(node.information) == 0) {
            node.information = info;
        } else if (info.compareTo(node.information) > 0) {
            insert(info, node.right, node, true);
        } else {
            insert(info, node.left, node, false);
        }
    }

    private boolean isMember(T info, Node node) {

        boolean member = false;

        if (node == null) {
            member = false;
        } else if (info.compareTo(node.information) == 0) {
            member = true;
        } else if (info.compareTo(node.information) > 0) {
            member = isMember(info, node.right);
        } else {
            member = isMember(info, node.left);
        }

        return member;
    }

    private void delete(T info, Node node) throws NoSuchElementException {

        if (node == null) {
            throw new NoSuchElementException();
        } else if (info.compareTo(node.information) == 0) {
            deleteNode(node);
        } else if (info.compareTo(node.information) > 0) {
            delete(info, node.right);
        } else {
            delete(info, node.left);
        }
    }

    private void deleteNode(Node node) {

        Node eNode, minMaxNode, delNode = null;
        boolean rightNode = false;

        if (node.isLeaf()) {
            if (node.parent == null) {
                root = null;
            } else if (node.isRightNode()) {
                node.parent.right = null;
                rightNode = true;
            } else if (node.isLeftNode()) {
                node.parent.left = null;
            }
            delNode = node;
        } else if (node.hasLeftNode()) {
            minMaxNode = node.left;
            for (eNode = node.left; eNode != null; eNode = eNode.right) {
                minMaxNode = eNode;
            }
            delNode = minMaxNode;
            node.information = minMaxNode.information;

            if (node.left.right != null) {
                minMaxNode.parent.right = minMaxNode.left;
                rightNode = true;
            } else {
                minMaxNode.parent.left = minMaxNode.left;
            }

            if (minMaxNode.left != null) {
                minMaxNode.left.parent = minMaxNode.parent;
            }
        } else if (node.hasRightNode()) {
            minMaxNode = node.right;
            delNode = minMaxNode;
            rightNode = true;

            node.information = minMaxNode.information;

            node.right = minMaxNode.right;
            if (node.right != null) {
                node.right.parent = node;
            }
            node.left = minMaxNode.left;
            if (node.left != null) {
                node.left.parent = node;
            }
        }
        restructDelete(delNode.parent, rightNode);
    }

    private int getHeight(Node node) {
        int height = 0;

        if (node == null) {
            height = -1;
        } else {
            height = 1 + Math.max(getHeight(node.left), getHeight(node.right));
        }
        return height;
    }

    private String inOrder(Node node) {

        String result = "";
        if (node != null) {
            result = result + inOrder(node.left) + " ";
            result = result + node.information.toString();
            result = result + inOrder(node.right);
        }
        return result;
    }

    private String preOrder(Node node) {

        String result = "";
        if (node != null) {
            result = result + node.information.toString() + " ";
            result = result + preOrder(node.left);
            result = result + preOrder(node.right);
        }
        return result;
    }

    private String postOrder(Node node) {

        String result = "";
        if (node != null) {
            result = result + postOrder(node.left);
            result = result + postOrder(node.right);
            result = result + node.information.toString() + " ";
        }
        return result;
    }

    private void restructInsert(Node node, boolean wasRight) {

        if (node != root) {
            if (node.parent.balance == '_') {
                if (node.isLeftNode()) {
                    node.parent.balance = '/';
                    restructInsert(node.parent, false);
                } else {
                    node.parent.balance = '\\';
                    restructInsert(node.parent, true);
                }
            } else if (node.parent.balance == '/') {
                if (node.isRightNode()) {
                    node.parent.balance = '_';
                } else {
                    if (!wasRight) {
                        rotateRight(node.parent);
                    } else {
                        doubleRotateRight(node.parent);
                    }
                }
            } else if (node.parent.balance == '\\') {
                if (node.isLeftNode()) {
                    node.parent.balance = '_';
                } else {
                    if (wasRight) {
                        rotateLeft(node.parent);
                    } else {
                        doubleRotateLeft(node.parent);
                    }
                }
            }
        }
    }

    private void restructDelete(Node z, boolean wasRight) {

        Node parent;
        boolean isRight = false;
        boolean climb = false;
        boolean canClimb;

        if (z == null) {
            return;
        }

        parent = z.parent;
        canClimb = (parent != null);

        if (canClimb) {
            isRight = z.isRightNode();
        }

        if (z.balance == '_') {
            if (wasRight) {
                z.balance = '/';
            } else {
                z.balance = '\\';
            }
        } else if (z.balance == '/') {
            if (wasRight) {
                if (z.left.balance == '\\') {
                    doubleRotateRight(z);
                    climb = true;
                } else {
                    rotateRight(z);
                    if (z.balance == '_') {
                        climb = true;
                    }
                }
            } else {
                z.balance = '_';
                climb = true;
            }
        } else {
            if (wasRight) {
                z.balance = '_';
                climb = true;
            } else {
                if (z.right.balance == '/') {
                    doubleRotateLeft(z);
                    climb = true;
                } else {
                    rotateLeft(z);
                    if (z.balance == '_') {
                        climb = true;
                    }
                }
            }
        }

        if (canClimb && climb) {
            restructDelete(parent, isRight);
        }
    }

    private void rotateLeft(Node a) {

        Node b = a.right;

        if (a.parent == null) {
            root = b;
        } else {
            if (a.isLeftNode()) {
                a.parent.left = b;
            } else {
                a.parent.right = b;
            }
        }

        a.right = b.left;
        if (a.right != null) {
            a.right.parent = a;
        }

        b.parent = a.parent;
        a.parent = b;
        b.left = a;

        if (b.balance == '_') {
            a.balance = '\\';
            b.balance = '/';
        } else {
            a.balance = '_';
            b.balance = '_';
        }
    }

    private void rotateRight(Node a) {

        Node b = a.left;

        if (a.parent == null) {
            root = b;
        } else {
            if (a.isLeftNode()) {
                a.parent.left = b;
            } else {
                a.parent.right = b;
            }
        }

        a.left = b.right;
        if (a.left != null) {
            a.left.parent = a;
        }

        b.parent = a.parent;
        a.parent = b;
        b.right = a;

        if (b.balance == '_') {
            a.balance = '/';
            b.balance = '\\';
        } else {
            a.balance = '_';
            b.balance = '_';
        }
    }

    private void doubleRotateLeft(Node a) {

        Node b = a.right;
        Node c = b.left;

        if (a.parent == null) {
            root = c;
        } else {
            if (a.isLeftNode()) {
                a.parent.left = c;
            } else {
                a.parent.right = c;
            }
        }

        c.parent = a.parent;

        a.right = c.left;
        if (a.right != null) {
            a.right.parent = a;
        }
        b.left = c.right;
        if (b.left != null) {
            b.left.parent = b;
        }

        c.left = a;
        c.right = b;

        a.parent = c;
        b.parent = c;

        if (c.balance == '/') {
            a.balance = '_';
            b.balance = '\\';
        } else if (c.balance == '\\') {
            a.balance = '/';
            b.balance = '_';
        } else {
            a.balance = '_';
            b.balance = '_';
        }

        c.balance = '_';
    }

    private void doubleRotateRight(Node a) {

        Node b = a.left;
        Node c = b.right;

        if (a.parent == null) {
            root = c;
        } else {
            if (a.isLeftNode()) {
                a.parent.left = c;
            } else {
                a.parent.right = c;
            }
        }

        c.parent = a.parent;

        a.left = c.right;
        if (a.left != null) {
            a.left.parent = a;
        }
        b.right = c.left;
        if (b.right != null) {
            b.right.parent = b;
        }

        c.right = a;
        c.left = b;

        a.parent = c;
        b.parent = c;

        if (c.balance == '/') {
            b.balance = '_';
            a.balance = '\\';
        } else if (c.balance == '\\') {
            b.balance = '/';
            a.balance = '_';
        } else {
            b.balance = '_';
            a.balance = '_';
        }
        c.balance = '_';
    }

    class Node {

        T information;

        Node parent;

        Node left;

        Node right;

        char balance;

        public Node(T information, Node parent) {
            this.information = information;
            this.parent = parent;
            this.left = null;
            this.right = null;
            this.balance = '_';
        }

        boolean isLeaf() {
            return ((left == null) && (right == null));
        }

        boolean isNode() {
            return !isLeaf();
        }

        boolean hasLeftNode() {
            return (null != left);
        }

        boolean hasRightNode() {
            return (right != null);
        }

        boolean isLeftNode() {
            return (parent.left == this);
        }

        boolean isRightNode() {
            return (parent.right == this);
        }
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本在线播放一区二区三区| 日韩欧美二区三区| 99视频有精品| 91麻豆免费看| 欧美xingq一区二区| 久久网站最新地址| 国产精品传媒视频| 一区二区三区不卡视频| 奇米色777欧美一区二区| 国产精品自拍av| 在线观看一区二区视频| 欧美一区二区三区不卡| 国产精品久久久99| 韩国欧美一区二区| 91麻豆国产在线观看| 日韩一区二区三区在线| 国产精品视频你懂的| 亚洲成人av电影在线| 大陆成人av片| 欧美精品一区二区三区四区| 亚洲综合色区另类av| 成人一区二区三区在线观看| 正在播放一区二区| 亚洲激情图片小说视频| 国产成a人无v码亚洲福利| 日韩精品最新网址| 五月婷婷欧美视频| 91成人免费在线| 亚洲成av人片一区二区梦乃| av男人天堂一区| ...av二区三区久久精品| 激情国产一区二区| 精品sm捆绑视频| 精品写真视频在线观看| 日韩精品一区二区三区在线| 蜜臀a∨国产成人精品| 日韩一区和二区| 狠狠色狠狠色综合日日91app| 欧美一区二区三区思思人| 香蕉成人啪国产精品视频综合网| 99久久精品国产网站| 日韩欧美激情四射| 麻豆精品国产传媒mv男同| 一本大道久久a久久精二百| 国产精品女主播av| 国产成人免费视频网站| 国产精品日韩成人| 国产精品一区一区| 国产亚洲精品超碰| 国产精品影视在线| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 狠狠色综合日日| 日韩精品一区二区三区在线| 日韩av电影免费观看高清完整版 | 国产麻豆视频一区二区| 26uuu精品一区二区在线观看| 青青草97国产精品免费观看无弹窗版| 制服丝袜亚洲播放| 激情久久五月天| 自拍偷拍亚洲激情| 精品国产乱子伦一区| 不卡电影一区二区三区| 国产精品国产三级国产aⅴ中文| 色婷婷综合视频在线观看| 伊人一区二区三区| 日韩欧美国产麻豆| 成人免费不卡视频| 无吗不卡中文字幕| 国产精品久久久久aaaa樱花| 欧美男同性恋视频网站| 国产99久久久久久免费看农村| 亚洲欧美日韩精品久久久久| 日韩欧美123| 99re视频这里只有精品| 激情文学综合网| 日韩**一区毛片| 日韩理论片一区二区| 欧美videos大乳护士334| 欧美午夜不卡视频| 91视频免费观看| 色天使久久综合网天天| 韩国在线一区二区| 国模一区二区三区白浆| 蜜臀91精品一区二区三区| 日韩av高清在线观看| 亚洲1区2区3区4区| 亚洲成人一区二区| 日本中文字幕一区二区有限公司| 亚洲丝袜美腿综合| 国产日韩v精品一区二区| xfplay精品久久| 久久久久9999亚洲精品| 欧美www视频| 中文字幕在线观看一区二区| 国产精品三级在线观看| 中文字幕一区二区不卡| 另类专区欧美蜜桃臀第一页| 另类欧美日韩国产在线| 丁香网亚洲国际| 91福利视频在线| 欧美一三区三区四区免费在线看| 欧美久久婷婷综合色| 日韩欧美亚洲另类制服综合在线| 欧美视频自拍偷拍| 国产三级欧美三级| 亚洲人精品午夜| 奇米影视在线99精品| 国产精品一区二区视频| 一本久道久久综合中文字幕| 欧美精品电影在线播放| 日本一区二区成人| 日韩中文字幕亚洲一区二区va在线| 亚洲成a人v欧美综合天堂下载| 五月综合激情网| 99久久99久久免费精品蜜臀| 日韩欧美一区二区免费| 亚洲天堂2014| 丁香啪啪综合成人亚洲小说| 精品视频色一区| 国产精品家庭影院| 国产成人精品免费一区二区| 欧美精品亚洲一区二区在线播放| 国产精品理论片| 国产乱子伦一区二区三区国色天香| 欧美午夜宅男影院| 亚洲精品高清在线| 91麻豆免费在线观看| 国产精品久久久久aaaa| 波多野结衣的一区二区三区| 欧美va亚洲va香蕉在线| 水野朝阳av一区二区三区| 一本色道亚洲精品aⅴ| 欧美一级国产精品| 日本在线不卡一区| 日韩免费在线观看| 精品一区二区三区在线观看国产| 制服丝袜亚洲色图| 国产精品一级片在线观看| 国产女主播一区| 高清不卡在线观看av| 国产精品欧美一区二区三区| 国产精品系列在线观看| 国产精品乱人伦中文| 99视频在线精品| 亚洲免费观看高清| 在线不卡的av| 成人一道本在线| 国产精品久久久久精k8 | 51久久夜色精品国产麻豆| 性感美女极品91精品| 欧美va在线播放| 91色乱码一区二区三区| 日本一区中文字幕| 中文字幕视频一区二区三区久| 欧美色网站导航| 激情综合色丁香一区二区| 国产精品传媒在线| 欧美一区二区三区四区在线观看| 国产成人午夜片在线观看高清观看| 亚洲色欲色欲www在线观看| 精品少妇一区二区三区日产乱码 | 成人爱爱电影网址| 免费观看在线综合色| 亚洲三级久久久| 日韩视频国产视频| 在线看不卡av| 色综合咪咪久久| 成人ar影院免费观看视频| 亚洲成人1区2区| 偷拍自拍另类欧美| 亚洲日本青草视频在线怡红院| 亚洲精品在线三区| 亚洲精品五月天| 国内精品国产三级国产a久久| 99精品欧美一区二区三区小说 | 国产麻豆视频一区| 欧美色欧美亚洲另类二区| 日韩理论电影院| 欧美亚洲禁片免费| 亚洲一区二区在线免费观看视频 | 美洲天堂一区二卡三卡四卡视频| 在线观看日韩毛片| 日韩av二区在线播放| 7777精品伊人久久久大香线蕉最新版 | 欧美在线一二三| 调教+趴+乳夹+国产+精品| 91麻豆精品国产自产在线观看一区| 午夜精品久久一牛影视| 欧美日韩一区久久| 久久99蜜桃精品| 国产精品久久久久久久久晋中 | 亚洲国产精品成人综合| 92精品国产成人观看免费| 亚洲乱码中文字幕综合| 欧美羞羞免费网站| 久久国产精品第一页| 中文字幕欧美区| 欧美日韩aaa| 国产一区二区日韩精品| 亚洲欧美一区二区三区国产精品|