- 博客(22)
- 收藏
- 关注
原创 树的遍历(LeetCode897. 递增顺序搜索树)
注意递归中,每个递归函数中的root代表遍历中对应的结点。只要之后进入递归时的结点没改变,就可以在函数中对结点进行操作。class Solution { TreeNode* tmp;public: TreeNode* increasingBST(TreeNode* root) { TreeNode* dummy=new TreeNode(-1); tmp=dummy; inorder(root); return dummy-
2022-05-10 11:22:43
114
原创 给定任意两种遍历结果,重建树的结构(Leetcode105、106、889)
总结前序是中左右,中序是左中右,后序是左右中。问题的关键在于计算左子树元素个数。用中序计算左子树元素个数(InRootInd-inL)。而对于前序和后序的情况,用后序计算左子树元素个数(postLind-postL+1)。对于中序,需要确定中序中根的位置(InRootInd),根的位置通过前序中第一个元素,或后序中最后一个元素(rootval)确定。而对于前序和后序的情况,需要确定后序中左子树的最后一个元素(左子树的根)位置(postLind),这是通过先序中第二个元素(preL+1,也是左子树的
2022-05-09 21:14:48
254
原创 关于大小端
大端 big-endian,big代表高字节,endian代表尾端,即一个数据的尾端是高字节的。小端 little-endian,little代表低字节,endian代表尾端,即一个数据的尾端是低字节的。
2021-11-12 15:42:36
364
原创 C++对齐规则
对齐基数在gcc中通过预编译指令#pragma pack(n),n = 1,2,4,8,16设定,对齐规则如下:成员相对于首地址的偏移量需要被该成员大小与对齐基数中较小者整除。 整个结构体大小需要被最宽成员大小与对齐基数中较小者整除。...
2021-10-13 11:52:21
280
原创 decltype、函数、函数指针、优先队列使用
#include<iostream>using namespace std;bool cmp(int a, int b) { return a > b;}int main() { decltype(cmp) t; decltype(&cmp) t1; bool t2; cout << typeid(t).name() << endl; //bool __cdecl(int,int) ...
2021-09-29 14:57:09
673
原创 继承的构造函数
#include"iostream"using namespace std;class Base {public: int b; Base() { b=1; }; Base(int b_) { b = b_; };};class D1 :public Base {public: int d{0}; D1(int b_) :Base(b_){} //没有这句D1 d(2)会报错};int main() { D1 d(2); cout << d.b; re.
2021-09-03 16:52:01
85
原创 虚函数与作用域cpp P550
#include"iostream"class Base {public: virtual int fcn() { return 0; };};class D1 :public Base {public: int fcn(int) { return 0; }; virtual void f2() {};};class D2 :public D1 {public: int fcn(int) { return 0; }; int fcn() { re...
2021-09-03 16:00:36
130
原创 decltype、变量与指针
#include<iostream>using namespace std;int main() { int a, * p = &a; decltype(a) t1; decltype(p) t2; decltype(*p) t3;//*+decltype ==> 引用变量 ==> 需要初始化 decltype((a)) t4;//()+decltype ==> 引用变量 ==> 需要初始值 return 0;...
2021-08-30 16:10:29
160
原创 vector<shared_ptr>与内存泄漏
#define _CRTDBG_MAP_ALLOC#include<crtdbg.h>#include<iostream>#include<vector>#include<memory>using namespace std;void f1() { vector<int*> vec; vec.push_back(new int(5)); vec.push_back(new int(6)); //cout << *.
2021-08-21 23:34:48
2068
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人