满二叉树、完全二叉树、平衡二叉树、堆、哈夫曼树的概念 一、满二叉树 一棵二叉树的结点要么是叶子结点,要么它有两个子结点(如果一个二叉树的层数为K,且结点总数是(2^k) -1,则它就是满二叉树。) 二、完全二叉树 若设二叉树的深度为k,除第 k 层外,其它各层 (1~k-1) 的结点数都达到最大个数,第k 层所有的结点都连续集中在最左边,这就是完全二叉树。 三、平衡二叉树 它或者是一颗空树,或它的左子树和右子树的深度之差(平衡因子)的绝对值 2020-09-19 数据结构 #二叉树 #数据结构
二叉搜索树的插入、删除节点 二叉树结构定义123456789101112131415161718192021struct Node{ int data=0; Node* parent=NULL; Node* lchild=NULL; Node* rchild=NULL; Node(int n) { data=n; }};class 2020-09-19 c++ #二叉树 #数据结构 #c++
二叉树的遍历(前序、中序、后序)*(递归、非递归)共6种 二叉树结构定义1234567891011121314151617struct Node{ int data=0; Node* parent=NULL; Node* lchild=NULL; Node* rchild=NULL; Node(int n) { data=n; }};class BinaryS 2020-09-19 c++ #二叉树 #数据结构
VSCode C++断点调试配置 之前一直使用VS2019调试c++程序,但是平时写得比较多的单个cpp文件也需要建一个VS项目给人的感觉有些冗杂,接触了VSCode之后就被它的轻量和高扩展性吸引了,是时候把断点调试功能也配置好,尽量不用VS2019了。 在这之前需要安装好MinGW,配置好环境变量。 然后安装这个插件 CodeLLDB 打开空文件夹,新建cpp文件,可以先设置好断点 点击创建launch.json文件,选择C 2020-09-18 软件安装配置 #软件安装配置 #c++
递归应用:汉诺塔、数制转换 汉诺塔如下图所示,从左到右有A、B、C三根柱子,其中A柱子上面有从小叠到大的n个圆盘,现要求将A柱子上的圆盘移到C柱子上去,期间只有一个原则:一次只能移到一个盘子且大盘子不能在小盘子上面,求移动的步骤和移动的次数 n == 1 第1次 1号盘 A—->C sum = 1 n == 2 第 2020-09-18 c++ #数据结构 #c++ #递归
递归的基本概念 什么是递归?递归就是自己调用自己,引用一个经典故事理解: 从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?“从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?‘从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?……’” 故事调用故事本身,层次越来越深…… 使用递归的条件1.问题本身可以分解为子问题,并且与原问题有相同的 2020-09-18 c++ #递归
双向链表简单示例 双向链表与双向链表相比,每个元素都有两个指针分别指向前后两个元素,这意味着双向链表可以双向遍历。 简单例子如下 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767 2020-09-18 c++ #数据结构 #链表 #c++
中缀表达式转后缀表达式 从左向右扫描中缀表达式;访问到操作数,加人后缀表达式;访问到左括号“(“,立即入栈;访问到右括号“)”,栈中操作符依次出栈并加入后缀表达式,直到出现左括号“(”,“(”出栈;访问到除括号之外的其他操作符,当其优先级比栈顶除“(”之外的操作符高时入栈,否则比当前操作符优先级高或者优先级相等的操作符依次出栈。 使用一种不需要括号的表达式的图形表示法,称为表达式树。树使用圆圈代表存储数据的节点,这些节点 2020-09-17 数据结构 #数据结构
栈和队列 1. 栈的简介1.1栈的特点栈(Stack)是一种线性存储结构,它具有如下特点: 栈中的数据元素遵守”先进后出”(First In Last Out)的原则,简称FILO结构。 限定只能在栈顶进行插入和删除操作。 1.2栈的相关概念栈的相关概念: 栈顶与栈底:允许元素插入与删除的一端称为栈顶,另一端称为栈底。 压栈:栈的插入操作,叫做进栈,也称压栈、入栈。 弹栈:栈的删除操作,也叫做出栈。 2020-09-17 数据结构 #数据结构
完整功能单链表 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210 2020-09-17 c++ #数据结构 #链表 #c++