摘要: 1. 题目 给定一个二叉树,统计该二叉树数值相同的子树个数 同值子树是指该子树的所有节点都拥有相同的数值 2. 解题 后序遍历,叶子节点肯定是一个同值子树 判断根节点和左右子树是否同值 3. 代码 bool dfs(TreeNode* root) { if(!root) return true; b 阅读全文
posted @ 2021-04-19 13:47 赫拉克利特 阅读(355) 评论(0) 推荐(0) 编辑
摘要: 1. 题目 依次从左到右,每次收集并删除所有的叶子节点 2. 解题 1、先后序遍历把树倒过来,再遍历一次从最外层 2、后序遍历找到每一个节点所在的层级 3. 代码 int dfs(TreeNode* root) { if(!root) return -1; int hl = dfs(root->le 阅读全文
posted @ 2021-03-17 21:46 赫拉克利特 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 1. 题目 给定一个二叉树,其中所有的右节点要么是具有兄弟节点(拥有相同父节点的左节点)的叶节点,要么为空将此二叉树上下翻转并将它变成一棵树, 原来的右节点将转换成左叶节点。返回新的根。 2. 解题 前序遍历或者后序遍历 3. 代码 TreeNode* upsideDown(TreeNode* ro 阅读全文
posted @ 2021-03-17 18:31 赫拉克利特 阅读(195) 评论(0) 推荐(0) 编辑
摘要: template<typename T> void kpx(vector<T>& a, int left, int right) { if(left>=right) return; swap(a[left], a[rand()%(right-left+1)+left]); int i=left-1; 阅读全文
posted @ 2021-03-12 23:10 赫拉克利特 阅读(623) 评论(0) 推荐(0) 编辑
摘要: 1. 题目 给定一个整数数组,你需要验证它是否是一个二叉搜索树正确的先序遍历序列。 2. 解题 1、要满足搜索树并且又是先序遍历 2、进来一个元素用stack记录,进栈 3、每次元素进栈前,先和栈顶比较,if大于栈顶,则是要安插在右子树 临时变量记录当前栈顶然后出栈,再和新栈顶比较,直到栈顶为空或者 阅读全文
posted @ 2021-02-19 12:03 赫拉克利特 阅读(162) 评论(0) 推荐(0) 编辑
摘要: STL的六大部件和联系? STL的6大部件包括:容器(Containers)、分配器(Allocators)、算法(Algorithm)、迭代器(Iterators)、适配器(Adapters)、仿函数(Functors)。 容器用于存储数据,是与内存打交道的,其背后有分配器支撑其分配内存,基于容器 阅读全文
posted @ 2020-11-15 10:43 赫拉克利特 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 若删除节点是双支节点,就用后继节点替代(值换,色不换) 然后问题变成删除后继节点 1、如果后继节点是单分支,那只有B-R的情况,再用后继节点替代 最后直接删除红色叶子节点 2、如果后继节点是叶子节点,只在黑色节点下才需要修复 2.1、该叶子节点的兄弟节点为红,为了确保兄弟变为黑, 需要将父节点与兄节 阅读全文
posted @ 2020-11-08 15:54 赫拉克利特 阅读(229) 评论(0) 推荐(0) 编辑
摘要: 平衡树是为了解决二叉查找树退化为链表的情况,而红黑树是为了解决平衡树在插入、删除等操作需要频繁旋转调整的情况 使用颜色来标识结点的高度 STL中的关联式容器(set、map、mulit)默认的底层实现都是红黑树 着色法则确保没有一条路径会比其它路径长出两倍 任意一个节点到到NULL(树尾端)的任何路 阅读全文
posted @ 2020-11-05 19:41 赫拉克利特 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 查找树,小的在左、大的在右 查:用递归含if,在logN内找到元素结点 增:跟查的差不多,增加新结点相当于插入当时的叶子节点,或左或右 (建树就是一直调用增) 删:通过查找到target,判断左右子树是否为空, 若一边为空,直接继承别一边。 若两边都不为空,用右子树的min结点作为继承结点代替tar 阅读全文
posted @ 2020-11-03 22:03 赫拉克利特 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 六大组件的交互关系:容器通过分配器取得数据储存空间,算法通过迭代器(泛化指针)存取容器的内容,仿函数可以协助算法完成不同的策略变化,适配器可以修饰或套接仿函数 二叉搜索树:它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;它的左 阅读全文
posted @ 2020-10-24 21:56 赫拉克利特 阅读(145) 评论(0) 推荐(0) 编辑