替罪羊树 学习总结 前言: 为什么会学替罪羊树?因为觉得AVL树那些的左旋右旋什么的太晕了啊QAQ 所以就在RHL大佬的推荐下,学习起了替罪羊树,这种不用旋转操作就能维护平衡的树 知识介绍: 在OI界一直都会有这样的一句话:“暴力即优雅”,而诸如分块、替罪羊树则是对这句话的最好诠释 对于二叉搜索树, ...
分类:
其他好文 时间:
2020-06-16 18:04:04
阅读次数:
132
题目描述: 给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7],返回 true 。 常规解法:DFS递归,分别计算每个结点的左右子树的高度,再计 ...
分类:
其他好文 时间:
2020-06-15 10:37:25
阅读次数:
64
假设有n个权值,则构造出的哈夫曼树有n个叶子结点。 n个权值分别设为 w1、w2、…、wn,哈夫曼树的构造规则为: 将w1、w2、…,wn看成是有n 棵树的森林(每棵树仅有一个结点); 在森林中选出根结点的权值最小的两棵树进行合并,作为一棵新树的左、右子树,且新树的根结点权值为其左、右子树根结点权值 ...
分类:
其他好文 时间:
2020-06-13 15:45:17
阅读次数:
101
题目描述: 给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 DFS:递归,和100题相同的树类似,不过要注意是左右子树进行比较 //C //注意这个函数声明 bool isMirroTree(struct TreeNode* p, struct Tr ...
分类:
其他好文 时间:
2020-06-13 11:25:28
阅读次数:
56
距离上次写splay已经过去了10个月了,今天高兴地重拾了平衡树,赶紧过来写一下自己的写法,以后好养成习惯 需要解释的尽量在代码里注释了,就不过多说了 检查x是父亲的左儿子还是右儿子 int chk(int x) { return ch[fa[x]][1] == x; } pushup void p ...
分类:
其他好文 时间:
2020-06-11 21:56:42
阅读次数:
50
class Solution(object): def isSameTree(self, p, q): """ :type p: TreeNode :type q: TreeNode :rtype: bool """ # 根节点值不同,树不同 if p.val != q.val: return Fa ...
分类:
其他好文 时间:
2020-06-08 14:46:48
阅读次数:
57
#include using namespace std; //加分二叉树 int n,dp[40][40]={0},a[40],ans=0,root[40][40]; void f(int i,int j){ if(i>j) return; cout>n; for(int i=1;i>a[i]; ... ...
分类:
其他好文 时间:
2020-06-06 21:27:21
阅读次数:
60
1. 基本概念 max_heap,min_heap是一颗堆树。其定义如下: (1) 堆树是一颗完全二叉树; (2) 根节点的值大于子节点(max_heap);对于·min_heap,根节点的值小于子节点; (3) 左右子树也是一颗堆树。 比如下面的完全二叉树,就是一个max_heap: 回想完全二叉 ...
分类:
其他好文 时间:
2020-06-05 00:32:23
阅读次数:
80
题目: 思路: 1、递归处理子问题,判断某个树是否对称只需要判断它的左右子树是否对称,而判读两个树是否对称需要判断: 根结点是否相等 && A.left和B.right是否对称 && A.right和B.left是否对称。判断子树是否对称变成了相同的子问题,递归处理。注意这里的核心是把一颗树是否对称 ...
分类:
其他好文 时间:
2020-06-04 13:58:10
阅读次数:
41
定义:二叉排序树或者是一棵空树,或者是具有如下性质的二叉树: 1.若它的左子树非空,则左子树上所有结点的值均小于它的根结点的值; 2.若它的右子树非空,则右子树上所有结点的值均大于二叉排序树(二叉查找树) 3.若它的右子树非空,则右子树上所有结点的值均大于(或大于等于)它的根结点的值;它的左、右子树 ...
分类:
其他好文 时间:
2020-06-04 10:37:20
阅读次数:
70