
C++
文章平均质量分 71
dio33
但行前路 莫问归途
展开
-
[C++]-二叉搜索树与双向链表
本题做法记录树最左侧节点开始,首先将其left置为nullptr,使用双指针,cur首先指向4,pre指向nullptr,然后将cur指向其父节点6,然后连接cur->left = pre,则pre现在为4,将pre->right = cur,将pre = cur,依次连接。最后返回双向的最左端即可。接下来返回到节点6,链接4和6。然后走节点6的right节点8,节点8的左子树为空,直接走完之后链接6和8,然后走节点8的右子树直接返回。要求在原树上进行操作,不可以创建新的节点,大大提高了本题的难度。原创 2023-05-17 17:38:07 · 103 阅读 · 0 评论 -
[C++]-二叉树的最近公共祖先
如果要找7和8的最近公共祖先,首先将7节点的所有祖先入栈352,然后将8节点的所有祖先入栈31,因为两个节点所在高度可能不一致,所以先将长的栈出栈直到两个栈长度相等。然后一一比较,直到相等,得到最近公共祖先是3。如果要找6和4的最近公共祖先,首先将6节点的所有祖先入栈35,然后将4节点的所有祖先入栈352,因为两个节点所在高度可能不一致,所以先将长的栈出栈直到两个栈长度相等。然后走5的右子树2,压2,走2的左子树压7,找到节点7,然后依次返回true到2 返回true到5 返回true到3。原创 2023-05-17 16:33:52 · 160 阅读 · 0 评论 -
[C++]-二叉树层序遍历
然后出,将队列头数据保存到vector中直到 leversize = 0,就可以将每层数据保存到一个vector中。然后再将每一层的vector保存到一个vector中。首先将根root入队列,然后将leversize设置为当前队列的长度。然后在出队列的同时,将出队列的节点的左右子树入队列。本题思路:可以使用queue和vector来解决。(即逐层地,从左到右访问所有节点)。本道题来自leetcode。直到队列为空,即遍历结束。1.给你二叉树的根节点。原创 2023-05-17 15:31:35 · 100 阅读 · 0 评论 -
[C++]-字符串翻转相关问题
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。示例 1:输入:s = ["h","e","l","l","o"]输出:["o","l","l","e","h"]示例 2:输入:s = ["H","a","n","n","a","h"]输出:["h","a","n","n","a","H"]本题采用双指针即可,第一个指针指向首字符,第二个字符指向尾字符。原创 2023-04-27 18:24:57 · 278 阅读 · 0 评论 -
[C++]-内存管理-堆-栈-数据端-代码端
来看看globalVar--全局数据--数据段,staticGlobalVar--全局静态数据--数据段,staticVar--局部静态变量--数据段,localVar--非静态局部变量--栈,num1--非静态局部变量--栈。strlen是一个计数器的工作(库函数),它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含'\0')。ptr1--指针--栈,*ptr1--动态内存--堆。原创 2023-04-25 11:14:18 · 109 阅读 · 0 评论 -
[C++]-字符串相加/字符串相乘
示例 3: 输入:num1 = "0", num2 = "0"给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。输出: "56088"原创 2023-04-27 19:22:42 · 5334 阅读 · 0 评论 -
[C++]-类和对象-part1
class定义类的关键字,date为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者 成员函数。class datepublic://类的方法或成员函数_day = day;//类的属性或成员变量private:int _year;int _month;int _day;类声明放在.h头文件中,成员函数定义放在.cpp中。原创 2023-04-12 21:19:47 · 149 阅读 · 2 评论