![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
树
青衫客36
这个作者很懒,什么都没留下…
展开
-
Acwing- 143. 最大异或对
暴力解法的思路是,固定一个数a[i](第一重循环),然后在a[1]-a[n]中选出a[j](第二重循环),使得a[i] ^ a[j] 最大。对于每个a[i]都能求出一个最大值,对所有情况再取一个max就是要求的答案。对于第一步枚举a[i]不是很好优化,所以我们把优化的重点放在第二步(即当a[i]固定时,如何在a[1]-a[n]中选出a[j],使得a[i]与a[j]的异或值最大)如何优化上面的程序呢?原创 2023-04-29 14:49:31 · 93 阅读 · 0 评论 -
Acwing- 835. Trie字符串统计
Trie模板原创 2023-04-29 13:08:16 · 94 阅读 · 0 评论 -
红黑树的实现(C++)
【代码】红黑树的实现(C++)原创 2023-04-13 21:37:41 · 204 阅读 · 0 评论 -
二分搜索树
【代码】二分搜索树。原创 2023-04-13 21:09:15 · 67 阅读 · 0 评论 -
红黑树(算法导论版)
(1)每个节点是红色或者黑色的。(2)根节点是黑色的。(3)所有叶子结点(NIL)都是黑色的。(4)如果一个节点是红色,则它的两个子节点都是黑色的。(5)对每个节点,从该节点到其所有后代叶节点的简单路径上,均包含相同数目的黑色节点。原创 2023-04-06 19:18:12 · 306 阅读 · 0 评论 -
Acwing-45. 之字形打印二叉树
类似,可在此基础上稍作修改,可以添加一个bool变量zigzag,当zigzag为true时,表示从右到左打印当前行,false时表示从左到右,记得每次给zigzag取个反。原创 2022-11-14 15:31:40 · 245 阅读 · 0 评论 -
Acwing-44. 分行从上往下打印二叉树
比如这个例子,第一行是8,我们先用8扩展出12和2,然后第一个节点扩展完了,再扩展NULL,此时在队列中新加入一个NULL,这时的NULL就是第二行的终止位置了,以此类推,前面两个节点扩展完之后,再扩展NULL,此时在队列中加入NULL,这个NULL就是下一层的终止位置。在遍历到第一行的NULL的时候,我们在第二行扩展出一个NULL来就可以了,同样的道理,在遍历到第二行的NULL的时候,再向队列中加入一个NULL,这个NULL就是第三行的NULL了。下一层已经没有节点了,即遍历完所有点了,直接break。原创 2022-11-14 15:11:15 · 72 阅读 · 0 评论 -
Acwing-43. 不分行从上往下打印二叉树
【代码】Acwing-43. 不分行从上往下打印二叉树。原创 2022-11-14 14:11:10 · 113 阅读 · 0 评论 -
Acwing-对称的二叉树
除了根节点都有一个性质,自己对应的节点是相同的,并且左右儿子,左右和右左分别对称。即根节点的左右两棵子树,每一棵都是左右对称的。原创 2022-11-04 13:30:22 · 93 阅读 · 0 评论 -
Acwing-二叉树的镜像
遍历树中的所有点,每次遍历完之后把左右儿子swap一下。原创 2022-11-04 13:10:35 · 53 阅读 · 0 评论 -
Acwing-树的子结构
从A的树根开始枚举,我们先看树根是不是B的根部,不是的话,然后再看树的左儿子是不是B的树根开始的一部分,不是的话就继续搜,即枚举一遍所有点是不是B的根,如果A的某个节点是B的根,那就再判断B是不是A的子结构,如果是就return true,否则就继续进行。怎么判断B是A的子结构?同时按顺序遍历B和A的分支,对于B的每一个分支,在遍历到叶节点之前,A都有与之对应的节点存在,那么B就是A的一部分。原创 2022-11-04 12:54:35 · 60 阅读 · 0 评论 -
LeetCode-二叉树的下一个节点
【代码】LeetCode-二叉树的下一个节点。原创 2022-10-25 16:50:31 · 340 阅读 · 0 评论 -
LeetCode-重建二叉树
我们在初始化时,用哈希表(unordered_map)记录每个值在中序遍历中的位置,这样我们在递归到每个节点时,在中序遍历中查找根节点位置的操作,只需要 O(1) 的时间。此时,创建每个节点需要的时间是 O(1),所以总时间复杂度是 O(n)。原创 2022-10-25 16:08:30 · 179 阅读 · 0 评论