当前位置: 首页 > news >正文

充值网站架设长沙人才招聘网长沙58同城招聘网

充值网站架设,长沙人才招聘网长沙58同城招聘网,page编辑wordpress,站多多 福州网站建设目录 1483. 树节点的第 K 个祖先 题目描述: 实现代码与解析: 倍增 原理思路: 1483. 树节点的第 K 个祖先 题目描述: 给你一棵树,树上有 n 个节点,按从 0 到 n-1 编号。树以父节点数组的形式给出&#…

目录

1483. 树节点的第 K 个祖先

题目描述:

实现代码与解析:

倍增

原理思路:


1483. 树节点的第 K 个祖先

题目描述:

        给你一棵树,树上有 n 个节点,按从 0 到 n-1 编号。树以父节点数组的形式给出,其中 parent[i] 是节点 i 的父节点。树的根节点是编号为 0 的节点。

树节点的第 k 个祖先节点是从该节点到根节点路径上的第 k 个节点。

实现 TreeAncestor 类:

  • TreeAncestor(int n, int[] parent) 对树和父数组中的节点数初始化对象。
  • getKthAncestor(int node, int k) 返回节点 node 的第 k 个祖先节点。如果不存在这样的祖先节点,返回 -1 。

示例 1:

输入:
["TreeAncestor","getKthAncestor","getKthAncestor","getKthAncestor"]
[[7,[-1,0,0,1,1,2,2]],[3,1],[5,2],[6,3]]输出:
[null,1,0,-1]解释:
TreeAncestor treeAncestor = new TreeAncestor(7, [-1, 0, 0, 1, 1, 2, 2]);treeAncestor.getKthAncestor(3, 1);  // 返回 1 ,它是 3 的父节点
treeAncestor.getKthAncestor(5, 2);  // 返回 0 ,它是 5 的祖父节点
treeAncestor.getKthAncestor(6, 3);  // 返回 -1 因为不存在满足要求的祖先节点

提示:

  • 1 <= k <= n <= 5 * 104
  • parent[0] == -1 表示编号为 0 的节点是根节点。
  • 对于所有的 0 < i < n ,0 <= parent[i] < n 总成立
  • 0 <= node < n
  • 至多查询 5 * 104 次

实现代码与解析:

倍增

class TreeAncestor {int M = 17;int[][] an;public TreeAncestor(int n, int[] parent) {an = new int[n][M];// 初始化for (int i = 0; i < n; i++) {Arrays.fill(an[i], -1);}for (int i = 0; i < n; i++) {an[i][0] = parent[i];}for (int j = 1; j < M; j++) {for (int i = 0; i < n; i++) {if (an[i][j - 1] != -1) {an[i][j] = an[an[i][j - 1]][j - 1];}}}}public int getKthAncestor(int node, int k) {for (int j = 0; j < M; j++) {if (((k >> j) & 1) != 0) {node = an[node][j];if (node == -1) return -1;}}return node;}
}

原理思路:

        倍增 + dp。

dp数组含义:f[i][j] 表示第 i 个节点的 2^j 的祖先节点。

转移方程:2 ^ j =2^(j - 1) + 2^(j - 1) 也就是f[i][j] = f[ f[ i ][ j - 1 ] ] [ j - 1 ]。

将 k 二进制例如:13 = 1101 = 8 + 4 + 1 = 2^3 + 2^2 + 2^0;

        假设我们要找x的第13个祖节点,可以先向上找到最近的第8个节点(t),在找的 t 的最近的第4个祖宗节点...........直到找到目标节点。

用公式就是:x = f[x][3], x = f[x][2], x = f[x][1];

顺序无所谓,可以8,4,1也可以1, 4, 8。  

http://www.yayakq.cn/news/64548/

相关文章:

  • 永登县建设局网站网页空间免费申请
  • asp做的网站缺点做网站网址怎么弄
  • 网站建设的计划书微信推广联盟
  • 长春网上建设网站1建设网站的重要性
  • 做的网站怎么提交到百度上去网站布局模版
  • 前端网站优化网站做app的重要性
  • 昆明门户网站建设做ui必要的网站
  • 国际网站平台有哪些泰安网络建设
  • 青岛网站建设服务平台wordpress亲子模板
  • 剑三做月饼活动网站wordpress不支持ie9
  • 免费视频素材网站推荐网站换域名
  • 如何设置网站根目录河南城乡建设网站
  • 江门企业建站程序网站制作过程内容
  • 电商食品网站建设国家和城乡建设部网站
  • 网站和公众号的区别是什么意思wordpress 多语言插件哪个好
  • 有哪些网站可以做青旅义工建设适应连锁行业网站
  • 网站 案例台州建设信息港网站
  • 最专业微网站多少钱哪些网站做外贸
  • 网站更换服务器需要重新备案吗个人网站源码下载
  • 织梦设置中英文网站猎头网招聘
  • 爱民网站制作创新的常州做网站
  • 青岛城乡建设局网站首页南宁百度关键词推广
  • 做网站平台公司织梦模板怎么验证网站
  • 南昌seo网站推广费用杭州网站建设案例
  • 哈尔滨专门做网站网站建设初步规划书
  • 长沙建站价格网站建设要备案吗
  • 沧州网站建设一网美联公司网站服务器租用
  • 深圳找人做网站浙江省建设政务网站
  • 自学html做网站要多久重庆知名企业
  • 网站建设与规划心得南宁画册设计公司