# Data-Structure-Algorithms **Repository Path**: harsonyoung_admin/data-structure-algorithms ## Basic Information - **Project Name**: Data-Structure-Algorithms - **Description**: Practical data structures and algorithms using C++ - **Primary Language**: C++ - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-01-18 - **Last Updated**: 2023-09-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Practical data structures and algorithms using C++ ## Tree **binarySearchTree** 二叉搜索树: ​ 基于右子树节点比根节点大,左子树节点比根节点小的原则插入节点(右大左小),查询时即可二分搜索。 **AVLTree** AVL树,二叉平衡搜索树: ​ 当二叉搜索树根节点为所有节点中最大或最小节点时,此时二叉搜索树会退化成链表。 ​ 为解决此问题,AVL树规定当一个节点的左右子树**高度**不超过2时,表示该子树是平衡的。当一个节点左右子树的高度超过2时,需要进行**旋转**来保持平衡。 **旋转**分为四种情况: 1. 当向左边添加一个节点后,使得左子树失衡,此时需要进行**左左旋转**(LeftLeft) 2. 当向右边添加一个节点后,使得右子树失衡,此时需要进行**右右旋转**(RightRight) 3. 当向右边添加一个节点后,使得左子树失衡,此时需要进行**左右旋转**(LeftRight) 4. 当向左边添加一个节点后,使得左子树失衡,此时需要进行**右左旋转**(RightLeft) **huffmanTree** 哈夫曼树,哈夫曼编码: ​ 哈夫曼树是一种带权路径长度最短的二叉树, ​ 建树方法:从所有元素中选取权值最小的两个,二者权值相加,形成一个新的父节点,新生成的节点也参与到其余的元素中,然后重复。 ​ ## Sort **bubbleSort** 冒泡排序 **insertionSort** 插入排序 **selectionSort** 选择排序