- 博客(12)
- 收藏
- 关注
原创 LeetCode145 : 二叉树的后序遍历 (非递归)
文章目录1. 题目描述2. 思路分析3. 代码展示1. 题目描述2. 思路分析后序 : 左 – 右 – 根思路和前序中序大体一致, 只是多了一个右子树是否访问的判断下面给出前序和中序的以供参考二叉树的前序遍历二叉树的中序遍历3. 代码展示class Solution {public: vector<int> postorderTraversal(TreeNode* root) { stack<TreeNode*> st;
2021-02-25 23:51:15 166
原创 LeetCode94 : 二叉树的中序遍历 (非递归)
文章目录1. 题目描述2. 思路分析3. 代码展示1. 题目描述2. 思路分析3. 代码展示class Solution {public: vector<int> inorderTraversal(TreeNode* root) { stack<TreeNode*> st; vector<int> ret; TreeNode* cur = root; //当前节点
2021-02-25 23:22:53 134
原创 LeetCode144 : 二叉树的前序遍历 (非递归)
文章目录1. 题目描述2. 思路分析3. 代码展示1. 题目描述2. 思路分析3. 代码展示class Solution {public: vector<int> preorderTraversal(TreeNode* root) { stack<TreeNode*> st; vector<int> ret; TreeNode* cur = root; //当前节点不为空 或者
2021-02-25 23:01:09 176 1
原创 二叉树进阶 --- 二叉搜索树的接口实现
这次我们进入一个全新的领域, 二叉树的进阶部分, 包含了二叉搜索树, STL中的map和set容器, AVl树, 红黑树等高阶数据结构. 今天我们先来研究二叉搜索树的接口实现.文章目录二叉搜索树的概念二叉搜索树的结点描述二叉搜索树的接口实现1. 整体框架&构造函数2. 查找3. 插入4. 中序遍历5. 删除6. 拷贝构造7. 赋值运算符重载8. 析构接口测试1. 插入&中序遍历测试2. 查找测试3. 删除测试4. 拷贝构造&赋值测试二叉搜索树的性能分析二叉搜索树的概念二.
2021-02-24 14:06:52 146
原创 LeetCode106 : 从中序与后序遍历序列构造二叉树
文章目录1. 题目描述2. 思路分析3. 代码展示1. 题目描述2. 思路分析3. 代码展示class Solution {public: TreeNode* _build(vector<int>& inorder, int L, int R, vector<int>& postorder, int& idx) { //左区间 > 右区间, 说明没有元素, 是空树 if(L > R)
2021-02-24 10:26:40 108
原创 LeetCode105 : 从前序与中序遍历序构造二叉树
文章目录1. 题目描述2. 思路分析3. 代码展示1. 题目描述2. 思路分析3. 代码展示class Solution {public: TreeNode* _build(vector<int>& preorder, int& idx, vector<int>& inorder, int L, int R) { //左区间>右区间, 说明没有元素, 是空树 if(L > R)
2021-02-24 10:24:10 77
原创 牛客JZ26 : 二叉搜索树与双向链表
文章目录1. 题目描述2. 思路分析3. 代码展示1. 题目描述2. 思路分析3. 代码展示class Solution {public: //这里prev要传指针的引用或者二级指针, //如果只传一个指针的话, 中序遍历往下层递归没有问题, //但是往上层返回的时候, prev一直是初始值prev, 也就是底层修改的prev没有影响到上层 //所以要保证在底层修改prev要能影响到上层 void _convert(TreeNode* roo
2021-02-23 21:57:37 118
原创 LeetCode236 : 二叉树的最近公共祖先
文章目录1. 题目描述2. 思路分析3. 代码展示1. 题目描述2. 思路分析3. 代码展示class Solution {public: //获取目标结点的路径 bool getPath(TreeNode* root, TreeNode* dest, deque<TreeNode*>& dq) { //空树, 返回false if(root == nullptr) return false;
2021-02-23 16:41:34 96
原创 LeetCode102 : 二叉树的层序遍历
文章目录1. 题目描述2. 思路分析3. 代码展示1. 题目描述2. 思路分析3. 代码展示class Solution {public: vector<vector<int>> levelOrder(TreeNode* root) { queue<TreeNode*> q; vector<vector<int>> ret; TreeNode* cur =
2021-02-23 09:54:40 83 2
原创 LeetCode606 : 根据二叉树创建字符串
文章目录1. 题目概述2. 核心分析3. 代码示例1. 题目概述2. 核心分析3. 代码示例class Solution {public: void _treeTostr(TreeNode* root, string& str) { //如果为空, 则返回 if(root == nullptr) return; //转换当前结点的数据: int --> string
2021-02-23 09:17:06 159
原创 (巨详细 + 图解) C++多态的机制原理
上一篇我们简单认识了C++的多态, 这次我们来看看多态的底层机制和原理. 不多哔哔, 直接开始.文章目录虚函数表(虚表)和虚表指针1. 虚表和虚表指针的认识2. 其他值得注意的问题3. 验证虚表存在哪里多态的原理动态绑定与静态绑定单继承和多继承关系的虚表1. 单继承中的虚表2. 验证虚表以nullptr结尾3. 多继承中的虚函数表关于虚函数的几个问题1. inline函数可以是虚函数吗?2. . 静态成员可以是虚函数吗?3. 构造函数可以是虚函数吗?虚函数表(虚表)和虚表指针1. 虚表和虚表指.
2021-02-16 23:50:56 1008 2
原创 (详细)一篇认识C++面向对象特性 —— 多态
之前介绍了C++面向对象的一大特性 —— 继承, 今天我们就来看看另外的一大特性 —— 多态. 话不多说, 直接进入正题.文章目录多态的概念多态的定义及实现1.实现多态的条件2. 虚函数及虚函数的重写3. 代码示例4. 虚函数重写的的特殊形式(协变)5. 关键字 final & override析构函数与虚函数纯虚函数与抽象类接口继承与实现继承多态的概念简单来说,多态就是一个行为、多种状态。举个栗子:买火车票,都是买票这一行为,普通人只能买成人票,而我们大学生持有学生证就可以买学生.
2021-02-16 14:54:35 541 3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人