首页 > 其他分享 >[数据结构] 树哈希(待补)

[数据结构] 树哈希(待补)

时间:2022-11-25 20:06:31浏览次数:80  
标签:prime hash 待补 hs 为根 哈希 哔哩 数据结构


树哈希

参考:
​​树哈希(Tree Hash)​​​哔哩哔哩koko​

无权树

哈希函数设计

设hs[x]表示以x为根的子树的哈希值

[数据结构] 树哈希(待补)_子树

其中y是x的儿子,[数据结构] 树哈希(待补)_子树_02是以y为根的子树的大小,prime[i]是第i个质数

其实这个函数就跟子树大小有关,那么这样的hash函数有个好处是可以换根

dfs一遍之后,我们只能得到一个根上的哈希值(只有hs[1]代表的是整颗树的hash值)
但是经常有题目要计算每个点为根的hash值(特别是无根树)

换根hs[x]->hs[y],y是x的子节点

[数据结构] 树哈希(待补)_子树_03

int vx=hs[x]-hs[y]*prime[siz[y]];
hs[y]+=vx*prime[n-siz[y]];

有权树


标签:prime,hash,待补,hs,为根,哈希,哔哩,数据结构
From: https://blog.51cto.com/u_15891800/5887696

相关文章

  • 【数据结构】树的遍历
    【数据结构】树的遍历​​题目链接​​思路如果树节点都不一样,那么我们可用通过树的中序遍历和后序遍历确定一棵树。我们通过哈希表来存左儿子和右儿子`l[root]=r[root]=构......
  • [线段树 多tag]D-数据结构
    [线段树多tag]D-数据结构题目思路多tag的线段树有时序性问题,因此不能直接把标记累计。例如:对于同样两个标记+和*,ax+b和(x+b)*a是不一样的,因此我们需要设计tag合并的规则......
  • [NEFU 数据结构] 第 2 章 线性表 知识点整理
    [NEFU数据结构]第2章线性表知识点整理阅读须知需求指向:此博客用于应付NEFU数据结构考试,基于题目进行整理,不适合想深入学习数据结构与算法艺术的同学。前置知识:C语言......
  • [NEFU]数据结构 知识点整理和代码实现
    [NEFU]数据结构知识点整理和代码实现Author:2020-计6-zslID:Fishingrod阅读须知需求指向:此博客用于应付NEFU数据结构考试,基于题目进行整理,不适合想深入学习数据结构与算法......
  • [NEFU 数据结构] 第 1 章 绪论 知识点整理
    [NEFU数据结构]第1章绪论知识点整理阅读须知需求指向:此博客用于应付NEFU数据结构考试,基于题目进行整理,不适合想深入学习数据结构与算法艺术的同学。前置知识:C语言参......
  • 哈希,哈希表,哈希冲突和哈希函数
    哈希是什么?    哈希不等于加密。哈希不可逆,一般的加密函数是可逆的。 哈希表:数组使用下标(序号)和元素进行关系对应,通过数组下标可以直接找到内存地址;哈希......
  • 数据结构初阶--单链表(讲解+类模板实现)
    单链表概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。值得注意的是:1.链表的在逻辑是连续的,物理上不一......
  • 数据结构——学习经验
    数据结构各位读者朋友,我是你们的好朋友IT黑铁,最近巩固一下数据结构,大部分适合我当前阶段的知识都已做了简介,而其他只列出了名字的有的是省略点到即可,有些高深的暂未研究。......
  • Java常用数据结构
    1、数组数组(Array) 是一种很常见的数据结构。它由相同类型的元素(element)组成,并且是使用一块连续的内存来存储。我们直接可以利用元素的索引(index)可以计算出该元......
  • 数据结构与算法java实现
    什么是数组?(1)数组是计算机中最基本的数据结构之一,我们会用一些名为索引的数字来标识每项数据在数组中的位置。(2)大多数编程语言中索引是从0开始的。(3)数组在内存中是存在......