国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

計(jì)算機(jī)基礎(chǔ)--->數(shù)據(jù)結(jié)構(gòu)(6)【AVL樹(shù)(平衡二叉樹(shù))】

這篇具有很好參考價(jià)值的文章主要介紹了計(jì)算機(jī)基礎(chǔ)--->數(shù)據(jù)結(jié)構(gòu)(6)【AVL樹(shù)(平衡二叉樹(shù))】。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

AVL(平衡二叉樹(shù))樹(shù)

平衡二叉樹(shù)是一種特殊的二叉搜索樹(shù),他的左子樹(shù)與右子樹(shù)的高度差不超過(guò)1。并且左右兩個(gè)子樹(shù)都是一顆平衡二叉樹(shù)。保持平衡的特性使得平衡二叉樹(shù)的查詢(xún)、插入和刪除操作在平均和最壞情況下的時(shí)間復(fù)雜度都是O(logn),其中n是樹(shù)中節(jié)點(diǎn)的數(shù)量。 相比于普通的二叉搜索樹(shù),平衡二叉樹(shù)更加適合處理動(dòng)態(tài)變化的數(shù)據(jù)集。 常見(jiàn)的平衡二叉樹(shù)有AVL樹(shù)、紅黑樹(shù)以及B樹(shù)等。這些樹(shù)結(jié)構(gòu)通過(guò)在插入或刪除節(jié)點(diǎn)時(shí)進(jìn)行特定的平衡操作來(lái)保持樹(shù)的平衡。

性質(zhì)

  • 它的左右子樹(shù)都是AVL樹(shù)
  • 左右子樹(shù)高度差不超過(guò)1
  • 完全二叉樹(shù)是AVL樹(shù),如果一棵樹(shù)是AVL樹(shù),那么其高度可保持在O(log2n),搜索時(shí)間復(fù)雜度為O(log2n)

AVL樹(shù)的操作(Java)

首先創(chuàng)建節(jié)點(diǎn)用來(lái)保存樹(shù)中的節(jié)點(diǎn)的數(shù)據(jù),其次和二叉搜索樹(shù)不同的是,AVL樹(shù)需要平衡因子來(lái)控制二叉樹(shù)的平衡。

節(jié)點(diǎn)的創(chuàng)建

    private class Node {
        int val;
        Node left;
        Node right;
        int height;

        public Node(int val) {
            this.val = val;
            this.left = this.right = null;
            this.height = 1;
        }
    }

AVL樹(shù)的插入

插入操作和二叉搜索樹(shù)是相同的,但是在插入結(jié)束時(shí)會(huì)判斷AVL樹(shù)是否平衡。

    // 向樹(shù)中添加節(jié)點(diǎn)
    public void add(int val) {
        if (contains(val)) {
            return;
        }
        this.root = add(this.root, val);
        this.size++;
    }

    // 向AVL樹(shù)中添加節(jié)點(diǎn)
    private Node add(Node node, int val) {
        // 遞歸到底的情況
        if (node == null) {
            return new Node(val);
        }
        if (node.val > val) {
            node.left = add(node.left, val);
        } else {
            node.right = add(node.right, val);
        }
        // 更新節(jié)點(diǎn)高度
        node.height = Math.max(getNodeHeight(node.left), getNodeHeight(node.right)) + 1;

        // 維護(hù)平衡
        int balance = getBalance(node);
        if (balance > 1 && getBalance(node.left) >= 0) {
            // 右旋
            return rightRotate(node);
        } else if (balance > 1 && getBalance(node.left) <= 0) {
            // 左旋右旋
            node.left = leftRotate(node.left);
            return rightRotate(node);
        } else if (balance < -1 && getBalance(node.right) >= 0) {
            // 右旋左旋
            node.right = rightRotate(node.right);
            return leftRotate(node);
        } else if (balance < -1 && getBalance(node.right) <= 0) {
            // 左旋
            return leftRotate(node);
        }
        return node;
    }

1.判斷平衡

一個(gè)二叉樹(shù)是否是平衡的,根絕二叉樹(shù)的性質(zhì)可以知道,當(dāng)其左右子樹(shù)節(jié)點(diǎn)的高度差的絕對(duì)值不超過(guò)1時(shí),這個(gè)二叉樹(shù)就是平衡二叉樹(shù),當(dāng)其高度差絕對(duì)值超過(guò)1時(shí),那么就是不平衡的二叉樹(shù),就需要對(duì)二叉樹(shù)進(jìn)行平衡調(diào)整。

 // 獲取當(dāng)前節(jié)點(diǎn)的平衡因子(左右子樹(shù)高度差)
    private int getBalance(Node node) {
        if (node == null) {
            return 0;
        }
        return getNodeHeight(node.left) - getNodeHeight(node.right);
    }

2.保持樹(shù)的平衡

當(dāng)判斷出一棵樹(shù)不平衡時(shí),需要進(jìn)行平衡調(diào)整。

二叉樹(shù)一般出現(xiàn)不平衡的時(shí)候有四種狀態(tài):

1. 左旋
計(jì)算機(jī)基礎(chǔ)--->數(shù)據(jù)結(jié)構(gòu)(6)【AVL樹(shù)(平衡二叉樹(shù))】,計(jì)算機(jī)基礎(chǔ),# 數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),AVL樹(shù),二叉樹(shù)

根據(jù)上圖,我們可以直到,當(dāng)二叉樹(shù)的右樹(shù)的高度超過(guò)平衡時(shí)需要進(jìn)行左旋,左旋的方式是先將x節(jié)點(diǎn)的左子樹(shù)單獨(dú)定義出來(lái)為t2,然后將y節(jié)點(diǎn)連接到x的左子樹(shù),將t2連接到y(tǒng)的右子樹(shù)上,這時(shí)就完成了左旋。

    // 左旋轉(zhuǎn)
    private Node leftRotate(Node y) {
        Node x = y.right;
        Node leftX = x.left;
        x.left = y;
        y.right = leftX;
        y.height = 1 + Math.max(getNodeHeight(y.left), getNodeHeight(y.right));
        x.height = 1 + Math.max(getNodeHeight(x.left), getNodeHeight(x.right));
        return x;
    }

2. 右旋
計(jì)算機(jī)基礎(chǔ)--->數(shù)據(jù)結(jié)構(gòu)(6)【AVL樹(shù)(平衡二叉樹(shù))】,計(jì)算機(jī)基礎(chǔ),# 數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),AVL樹(shù),二叉樹(shù)

右旋轉(zhuǎn)和左旋轉(zhuǎn)類(lèi)似,右旋的方式是先將x節(jié)點(diǎn)的右子樹(shù)單獨(dú)定義出來(lái)為t2,然后將y節(jié)點(diǎn)連接到x的右子樹(shù),將t2連接到y(tǒng)的左子樹(shù)上,這時(shí)就完成了右旋。

    // 右旋轉(zhuǎn)
    private Node rightRotate(Node y) {
        Node x = y.left;
        Node rightX = x.right;
        x.right = y;
        y.left = rightX;
        y.height = 1 + Math.max(getNodeHeight(y.left), getNodeHeight(y.right));
        x.height = 1 + Math.max(getNodeHeight(x.left), getNodeHeight(x.right));
        return x;
    }

3. 右旋+左旋

計(jì)算機(jī)基礎(chǔ)--->數(shù)據(jù)結(jié)構(gòu)(6)【AVL樹(shù)(平衡二叉樹(shù))】,計(jì)算機(jī)基礎(chǔ),# 數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),AVL樹(shù),二叉樹(shù)

所謂右旋+左旋就是將右旋和左旋進(jìn)行連接,將這類(lèi)不平衡的樹(shù)進(jìn)行平衡

4. 左旋+右旋

計(jì)算機(jī)基礎(chǔ)--->數(shù)據(jù)結(jié)構(gòu)(6)【AVL樹(shù)(平衡二叉樹(shù))】,計(jì)算機(jī)基礎(chǔ),# 數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),AVL樹(shù),二叉樹(shù)

3.判斷是否AVL樹(shù)

判斷是否AVL樹(shù)就是判斷二叉樹(shù)的各個(gè)節(jié)點(diǎn)的平衡因子是否都是小于等于1或者大于等于-1。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-522807.html

    // 判斷是否為平衡二叉樹(shù)
    public boolean isBalanceTree() {
        return isBalanceTree(this.root);
    }

    private boolean isBalanceTree(Node node) {
        if (node == null) {
            return true;
        }
        if (Math.abs(getBalance(node)) > 1) {
            return false;
        }
        return isBalanceTree(node.left) && isBalanceTree(node.right);
    }

 	// 獲取當(dāng)前節(jié)點(diǎn)的平衡因子(左右子樹(shù)高度差)
    private int getBalance(Node node) {
        if (node == null) {
            return 0;
        }
        return getNodeHeight(node.left) - getNodeHeight(node.right);
    }

4.刪除節(jié)點(diǎn)

    // 刪除任意節(jié)點(diǎn)
    public void remove(int val) {
        boolean isExist = contains(val);
        if (isExist) {
            this.root = remove(this.root, val);
        }
    }

    // 從以node為根的二分搜索樹(shù)中刪除值為val的結(jié)點(diǎn)
    private Node remove(Node node, int val) {
        Node resultNode = null;
        if (node.val == val) {
            // 葉子節(jié)點(diǎn)
            if (node.left == null) {
                Node rightNode = node.right;
                node.right = null;
                this.size--;
                resultNode = rightNode;
            } else if (node.right == null) {
                Node leftNode = node.left;
                node.left = null;
                this.size--;
                resultNode = leftNode;
            } else {
                // 找出刪除節(jié)點(diǎn)的后繼
                Node nextNode = getMinNode(node.right);
                // 從右樹(shù)中刪除最小節(jié)點(diǎn)
                nextNode.right = removeMinNode(node.right);
                // 開(kāi)始連接
                nextNode.left = node.left;
                // 讓node失去關(guān)聯(lián)關(guān)系
                node.left = node.right = null;
                resultNode = nextNode;
            }
        } else if (node.val > val) {
            node.left = remove(node.left, val);
            resultNode = node;
        } else {
            node.right = remove(node.right, val);
            resultNode = node;
        }

        // 刪除的是葉子節(jié)點(diǎn)
        if (resultNode == null) {
            return null;
        }

        // 刪除之后,可能改變了樹(shù)的平衡,因此需要進(jìn)行調(diào)整
        resultNode.height = Math.max(getNodeHeight(resultNode.left), getNodeHeight(resultNode.right)) + 1;

        Node result = resultNode;
        if (getBalance(resultNode) > 1 && getBalance(resultNode.left) >= 0) {
            result = rightRotate(resultNode);
        } else if (getBalance(resultNode) < -1 && getBalance(resultNode.right) <= 0) {
            result = leftRotate(resultNode);
        } else if (getBalance(resultNode) > 1 && getBalance(resultNode.left) < 0) {
            resultNode.left = leftRotate(resultNode.left);
            result = rightRotate(resultNode);
        } else if (getBalance(resultNode) < -1 && getBalance(resultNode.right) > 0) {
            resultNode.right = rightRotate(resultNode.right);
            result = leftRotate(resultNode);
        }
        return result;
    }

全部代碼

import java.util.*;

public class AVLTree {

    private Node root;
    private int size;

    public AVLTree() {
        this.root = null;
        this.size = 0;
    }

    // 判斷是否為空
    public boolean isEmpty() {
        return this.size == 0;
    }

    // 獲取樹(shù)中節(jié)點(diǎn)個(gè)數(shù)
    public int getSize() {
        return this.size;
    }

    // 獲取節(jié)點(diǎn)高度
    public int getNodeHeight(Node node) {
        if (node == null) {
            return 0;
        }
        return node.height;
    }

    // 獲取當(dāng)前節(jié)點(diǎn)的平衡因子(左右子樹(shù)高度差)
    private int getBalance(Node node) {
        if (node == null) {
            return 0;
        }
        return getNodeHeight(node.left) - getNodeHeight(node.right);
    }

    // 查找最小節(jié)點(diǎn)
    public Node getMinNode() {
        if (this.root == null) {
            return null;
        }
        return getMinNode(this.root);
    }

    private Node getMinNode(Node node) {
        if (node.left == null) {
            return node;
        }
        return getMinNode(node.left);
    }

    // 判斷是否重復(fù)
    public boolean contains(int val) {
        return contains(this.root, val);
    }

    private boolean contains(Node node, int val) {
        if (node == null) {
            return false;
        }
        if (node.val == val) {
            return true;
        } else if (node.val > val) {
            return contains(node.left, val);
        } else {
            return contains(node.right, val);
        }
    }

    // 向樹(shù)中添加節(jié)點(diǎn)
    public void add(int val) {
        if (contains(val)) {
            return;
        }
        this.root = add(this.root, val);
        this.size++;
    }

    // 向AVL樹(shù)中添加節(jié)點(diǎn)
    private Node add(Node node, int val) {
        // 遞歸到底的情況
        if (node == null) {
            return new Node(val);
        }
        if (node.val > val) {
            node.left = add(node.left, val);
        } else {
            node.right = add(node.right, val);
        }
        // 更新節(jié)點(diǎn)高度
        node.height = Math.max(getNodeHeight(node.left), getNodeHeight(node.right)) + 1;

        // 維護(hù)平衡
        int balance = getBalance(node);
        if (balance > 1 && getBalance(node.left) >= 0) {
            // 右旋
            return rightRotate(node);
        } else if (balance > 1 && getBalance(node.left) <= 0) {
            // 左旋右旋
            node.left = leftRotate(node.left);
            return rightRotate(node);
        } else if (balance < -1 && getBalance(node.right) >= 0) {
            // 右旋左旋
            node.right = rightRotate(node.right);
            return leftRotate(node);
        } else if (balance < -1 && getBalance(node.right) <= 0) {
            // 左旋
            return leftRotate(node);
        }
        return node;
    }

    // 從二分搜索樹(shù)中刪除最小節(jié)點(diǎn)
    public Node removeMinNode() {
        if (this.root == null) {
            return null;
        }
        Node result = getMinNode();
        if (result != null) {
            this.root = removeMinNode(this.root);
            this.size--;
        }
        return result;
    }

    private Node removeMinNode(Node node) {
        if (node.left == null) {
            return node.right;
        }
        node.left = removeMinNode(node.left);
        return node;
    }

    // 刪除任意節(jié)點(diǎn)
    public void remove(int val) {
        boolean isExist = contains(val);
        if (isExist) {
            this.root = remove(this.root, val);
        }
    }

    // 從以node為根的二分搜索樹(shù)中刪除值為val的結(jié)點(diǎn)
    private Node remove(Node node, int val) {
        Node resultNode = null;
        if (node.val == val) {
            // 葉子節(jié)點(diǎn)
            if (node.left == null) {
                Node rightNode = node.right;
                node.right = null;
                this.size--;
                resultNode = rightNode;
            } else if (node.right == null) {
                Node leftNode = node.left;
                node.left = null;
                this.size--;
                resultNode = leftNode;
            } else {
                // 找出刪除節(jié)點(diǎn)的后繼
                Node nextNode = getMinNode(node.right);
                // 從右樹(shù)中刪除最小節(jié)點(diǎn)
                nextNode.right = removeMinNode(node.right);
                // 開(kāi)始連接
                nextNode.left = node.left;
                // 讓node失去關(guān)聯(lián)關(guān)系
                node.left = node.right = null;
                resultNode = nextNode;
            }
        } else if (node.val > val) {
            node.left = remove(node.left, val);
            resultNode = node;
        } else {
            node.right = remove(node.right, val);
            resultNode = node;
        }

        // 刪除的是葉子節(jié)點(diǎn)
        if (resultNode == null) {
            return null;
        }

        // 刪除之后,可能改變了樹(shù)的平衡,因此需要進(jìn)行調(diào)整
        resultNode.height = Math.max(getNodeHeight(resultNode.left), getNodeHeight(resultNode.right)) + 1;

        Node result = resultNode;
        if (getBalance(resultNode) > 1 && getBalance(resultNode.left) >= 0) {
            result = rightRotate(resultNode);
        } else if (getBalance(resultNode) < -1 && getBalance(resultNode.right) <= 0) {
            result = leftRotate(resultNode);
        } else if (getBalance(resultNode) > 1 && getBalance(resultNode.left) < 0) {
            resultNode.left = leftRotate(resultNode.left);
            result = rightRotate(resultNode);
        } else if (getBalance(resultNode) < -1 && getBalance(resultNode.right) > 0) {
            resultNode.right = rightRotate(resultNode.right);
            result = leftRotate(resultNode);
        }
        return result;
    }

    // 中序遍歷
    public List<Integer> middleTravel() {
        List<Integer> list = new ArrayList<>();
        middleTravel(this.root, list);
        return list;
    }

    private void middleTravel(Node node, List<Integer> list) {
        if (node == null) {
            return;
        }
        middleTravel(node.left, list);
        list.add(node.val);
        middleTravel(node.right, list);
    }

    // 層序遍歷
    private List<Node> levelTravel() {
        List<Node> list = new ArrayList<>();
        Queue<Node> queue = new LinkedList<>();
        if (this.root == null) {
            return list;
        }
        queue.offer(this.root);
        while (!queue.isEmpty()) {
            Node node = queue.poll();
            list.add(node);
            if (node.left != null) {
                queue.offer(node.left);
            }
            if (node.right != null) {
                queue.offer(node.right);
            }
        }
        return list;
    }

    // 判斷是否是二分搜索樹(shù)
    public boolean isBinearySearchTree() {
        List<Integer> list = middleTravel();
        for (int i = 1; i < list.size(); i++) {
            if (list.get(i - 1) > list.get(i)) {
                return false;
            }
        }
        return true;
    }

    // 判斷是否為平衡二叉樹(shù)
    public boolean isBalanceTree() {
        return isBalanceTree(this.root);
    }

    private boolean isBalanceTree(Node node) {
        if (node == null) {
            return true;
        }
        if (Math.abs(getBalance(node)) > 1) {
            return false;
        }
        return isBalanceTree(node.left) && isBalanceTree(node.right);
    }

    // 右旋轉(zhuǎn)
    private Node rightRotate(Node y) {
        Node x = y.left;
        Node rightX = x.right;
        x.right = y;
        y.left = rightX;
        y.height = 1 + Math.max(getNodeHeight(y.left), getNodeHeight(y.right));
        x.height = 1 + Math.max(getNodeHeight(x.left), getNodeHeight(x.right));
        return x;
    }

    // 左旋轉(zhuǎn)
    private Node leftRotate(Node y) {
        Node x = y.right;
        Node leftX = x.left;
        x.left = y;
        y.right = leftX;
        y.height = 1 + Math.max(getNodeHeight(y.left), getNodeHeight(y.right));
        x.height = 1 + Math.max(getNodeHeight(x.left), getNodeHeight(x.right));
        return x;
    }

    public String show() {
        // 按層遍歷樹(shù)
        List<Node> list = levelTravel();
        String s = "";
        for (int i = 0; i < list.size(); i++) {
            s += "size = " + list.get(i).val + ", height = " + list.get(i).height + ", balance = " + getBalance(list.get(i)) + ";\n";
        }
        return s;
    }

    @Override
    public String toString() {
        // 按層遍歷樹(shù)
        List<Node> list = levelTravel();
        String s = "["+list.get(0).val;
        for (int i = 1; i < list.size(); i++) {
            s += "," + list.get(i).val;
        }
        s += "]";
        return s;
    }

    private class Node {
        int val;
        Node left;
        Node right;
        int height;

        public Node(int val) {
            this.val = val;
            this.left = this.right = null;
            this.height = 1;
        }
    }

    public static void main(String[] args) {
        AVLTree avlTree = new AVLTree();
        Random random = new Random();
        for (int i = 0; i < 10; i++) {
            avlTree.add(i);
            avlTree.add(random.nextInt(100));
        }
        System.out.println(avlTree.toString());
        // 判斷是否為平衡二叉樹(shù)
        System.out.println(avlTree.isBalanceTree());
        avlTree.removeMinNode();
        System.out.println(avlTree.toString());
        avlTree.remove(9);
        System.out.println(avlTree.toString());

    }
}

到了這里,關(guān)于計(jì)算機(jī)基礎(chǔ)--->數(shù)據(jù)結(jié)構(gòu)(6)【AVL樹(shù)(平衡二叉樹(shù))】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 計(jì)算機(jī)復(fù)試面試基礎(chǔ)知識(shí)(八股文)(數(shù)據(jù)庫(kù)、數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)、計(jì)網(wǎng)、機(jī)組等)

    數(shù)據(jù)庫(kù)緒論 1、簡(jiǎn)述三層模式、兩級(jí)映射,分別有什么作用? 模式(邏輯模式):是數(shù)據(jù)庫(kù)中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是數(shù)據(jù)庫(kù)系統(tǒng)模式結(jié)構(gòu)的中間層,即不涉及數(shù)據(jù)的物理存儲(chǔ)細(xì)節(jié),也與具體應(yīng)用程序開(kāi)發(fā)工具語(yǔ)言無(wú)關(guān)。 外模式(用戶(hù)模式):是用戶(hù)能看見(jiàn)和使

    2023年04月09日
    瀏覽(73)
  • 系統(tǒng)架構(gòu)設(shè)計(jì)師---計(jì)算機(jī)基礎(chǔ)知識(shí)之?dāng)?shù)據(jù)庫(kù)系統(tǒng)結(jié)構(gòu)與規(guī)范化

    目錄 一、基本概念 ?二、 數(shù)據(jù)庫(kù)的結(jié)構(gòu) ?三、常用的數(shù)據(jù)模型 ? ? ? ??概念數(shù)據(jù)模型 ? ? ? ?基本數(shù)據(jù)模型 ? ? ? ?面向?qū)ο竽P?四、數(shù)據(jù)的規(guī)范化 ? ? ?函數(shù)依賴(lài) ? ? ??范式 ? 1. 數(shù)據(jù)庫(kù) (DataBase, DB) : 是指長(zhǎng)期儲(chǔ)存在計(jì)算機(jī)內(nèi)的、有組織的、可共享的數(shù)據(jù)集合。 ??

    2024年02月12日
    瀏覽(28)
  • 計(jì)算機(jī)導(dǎo)論07-算法和數(shù)據(jù)結(jié)構(gòu)

    計(jì)算機(jī)導(dǎo)論07-算法和數(shù)據(jù)結(jié)構(gòu)

    算法是 為使用計(jì)算機(jī)解決問(wèn)題而制定的運(yùn)算序列,是解決實(shí)際問(wèn)題的方法及步驟 ;在計(jì)算機(jī)科學(xué)中,算法研究應(yīng)用計(jì)算機(jī)程序處理問(wèn)題的方法及其實(shí)現(xiàn)流程,是計(jì)算機(jī)問(wèn)題解決方案的完整描述, 它是計(jì)算機(jī)科學(xué)的核心研究對(duì)象之一。 算法的概念 一般認(rèn)為,算法(algorithm)

    2024年01月20日
    瀏覽(26)
  • 數(shù)據(jù)結(jié)構(gòu)與算法:計(jì)算機(jī)科學(xué)的基石

    數(shù)據(jù)結(jié)構(gòu)與算法:計(jì)算機(jī)科學(xué)的基石

    ??歡迎來(lái)到數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)專(zhuān)欄~數(shù)據(jù)結(jié)構(gòu)與算法:計(jì)算機(jī)科學(xué)的基石 ☆* o(≧▽≦)o *☆嗨~我是IT·陳寒?? ?博客主頁(yè):IT·陳寒的博客 ??該系列文章專(zhuān)欄:數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí) ??其他專(zhuān)欄:Java學(xué)習(xí)路線 Java面試技巧 Java實(shí)戰(zhàn)項(xiàng)目 AIGC人工智能 ??文章作者技術(shù)和水平有限,如果文中

    2024年02月11日
    瀏覽(28)
  • 【2023計(jì)算機(jī)考研】初試數(shù)據(jù)結(jié)構(gòu)的院校匯總

    PS:學(xué)校具體考研信息在院校信息中輸入學(xué)校名稱(chēng)搜索可查看 傳送門(mén):學(xué)校列表 - N諾計(jì)算機(jī)考研 專(zhuān)碩 北方工業(yè)大學(xué) 北京工商大學(xué) 北京石油化工學(xué)院 北京電子科技學(xué)院 中國(guó)農(nóng)業(yè)大學(xué) 中央財(cái)經(jīng)大學(xué) 北京物資學(xué)院 中央民族大學(xué) 天津職業(yè)技術(shù)師范大學(xué) 河北科技大學(xué) 石家莊鐵道

    2024年02月13日
    瀏覽(20)
  • 只考一門(mén)數(shù)據(jù)結(jié)構(gòu)!安徽工程大學(xué)計(jì)算機(jī)考研

    只考一門(mén)數(shù)據(jù)結(jié)構(gòu)!安徽工程大學(xué)計(jì)算機(jī)考研

    安徽工程大學(xué) 考研難度(☆) 內(nèi)容: 23考情概況(擬錄取和復(fù)試分析) 、院校概況、23專(zhuān)業(yè)目錄、23復(fù)試詳情、各專(zhuān)業(yè)考情分析、各科目考情分析。 正文992字,預(yù)計(jì)閱讀:3分鐘 2023考情概況 安徽工程大學(xué)計(jì)算機(jī)相關(guān)各專(zhuān)業(yè)復(fù)試和擬錄取分析: 083500軟件工程一志愿擬錄取12人

    2024年02月10日
    瀏覽(27)
  • 王道計(jì)算機(jī)考研 數(shù)據(jù)結(jié)構(gòu)C語(yǔ)言復(fù)現(xiàn)-第六章-隊(duì)列

    ?這篇文章收錄了王道考研課程中涉及的數(shù)據(jù)結(jié)構(gòu)的所有代碼。此外,本博客可能會(huì)添加一些額外的代碼(不僅限于王道考研),因?yàn)?08考試中會(huì)頻繁考察一些冷門(mén)的知識(shí)點(diǎn),所以這篇博客會(huì)涵蓋所有相關(guān)的代碼。這也是我數(shù)據(jù)結(jié)構(gòu)的第一輪復(fù)習(xí),希望能與大家共同進(jìn)步。由

    2024年01月21日
    瀏覽(24)
  • 計(jì)算機(jī)保研面試常見(jiàn)問(wèn)題(408數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)答題)

    計(jì)算機(jī)保研面試常見(jiàn)問(wèn)題(408數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)答題)

    1. 什么是時(shí)間復(fù)雜度?O(n)的O代表了什么? 答:時(shí)間復(fù)雜度是指執(zhí)行算法所需要的計(jì)算工作量,可以用于描述一個(gè)程序的規(guī)模。O(n)中的O表示的是最壞情況下的時(shí)間復(fù)雜度。 2. 時(shí)間復(fù)雜度的量級(jí)排序是什么? 答:O(logn) O(n) O(nlogn) O(n^2) O(2^n) O(n?。?3. 順

    2024年02月13日
    瀏覽(94)
  • 【23考研】計(jì)算機(jī)408數(shù)據(jù)結(jié)構(gòu)代碼題強(qiáng)化階段劃重點(diǎn)(王道書(shū))

    視頻鏈接:【23考研】10分鐘帶你整理408數(shù)據(jù)結(jié)構(gòu)強(qiáng)化階段代碼題復(fù)習(xí)重點(diǎn) 本篇只適合考408的同學(xué),請(qǐng)自主命題的同學(xué)自覺(jué)右上角×掉 因?yàn)橥醯罆?shū)為了照顧自主命題的同學(xué),所以很多算法也給出了代碼實(shí)現(xiàn),實(shí)際上對(duì)于考408的同學(xué),很多代碼是不需要掌握的,畢竟408的代碼題沒(méi)

    2024年02月15日
    瀏覽(47)
  • 【24計(jì)算機(jī)擇?!?7所只考數(shù)據(jù)結(jié)構(gòu)的985/211院校匯總

    最新數(shù)據(jù)見(jiàn):【24計(jì)算機(jī)擇?!?7所只考數(shù)據(jù)結(jié)構(gòu)的985/211院校匯總_綜合_N諾計(jì)算機(jī)考研 適合零基礎(chǔ)和跨考的同學(xué),不建議零基礎(chǔ)的同學(xué)考408,如果只想上岸的話可以保持關(guān)注哦~ 注意:以下 數(shù)據(jù)來(lái)源23考研初試專(zhuān)業(yè)課情況 ,24考研可能會(huì)有部分院校改考,大家要及時(shí)關(guān)注我們

    2024年02月16日
    瀏覽(20)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包