1.给定一棵完全二叉树的头节点head,求其中的节点个数
递归的方法,时间复杂度为O((logN)²)

首先递归出头节点的左子树的最大深度H,之后再递归头节点的右子树的深度是否等于H,若相等则表示,头节点的左子树加上头节点的节点数为2^(H-1)-1+1,递归头节点的右子树即可。若头节点的右子树的深度为H-1,则表示头节点的右子树加上头节点的总节点数为2^(H-2)-1+1,遍历头节点的左子树即可。

public static int bs(Node node, int l, int h){if(l == h){return 1;}if(mostLeftLevel(node.right, l+1) == h){return (1 << (h-l)) + bs(node.right, l +1, h);}else{return (1 << (h - l - 1)) + bs(node.left, l + 1, h);}
}
public static int mostLeftLevel(Node node, int level){while(node != null){level++;node = node.left;}return level - 1;
}

2.规定一个字符串类型的数组,其中不含有重复的字符串,如果其中某一个字符串是另一个字符串的前缀,返回true;如果没有任何一个字符串是另一个字符串的前缀,返回false
前缀树,把字符挂在边上,只需要把字符串都遍历一遍即可解决,若一个字符串遍历结束之后没有添加边,则其为之前的一个字符串的前缀,若其遍历到另一个字符串的结尾节点之后还需要添加边,则之前的字符串为当前字符串的前缀

public static class Tries{private HashMap<Character, Tries> children = new HashMap<Character, Tries>();private boolean end = false;public boolean addAndCheck(char[] chs, int i){if(end){return true;}if(i == chs.length){end = true;return !children.isEmpty();}if(!children.containsKey(chs[i])){children.put(chs[i], new Tries());}return children.get(chs[i].addAndCheck(chs, i + 1));}
}

有关完全二叉树求节点数和前缀树求字符串是否重复的两道算法题相关推荐

  1. python求回数_用python求回数

    今天学到filter函数,做一道练习题,求回数的,我前前后后差不多用了半个小时才把它弄出来,先是有思路了然后写出来后一直报错,又改改换换,最后其实是某个小问题导致的,每次查这种小问题时都先怀疑是不是思 ...

  2. c语言用库函数求正弦数,用C语言求正弦值?

    1.C语言中要编写sin函数,实质上要利用sin的泰勒公式,然后根据泰勒公式,将其中的每一项进行分解,最后用循环,累加计算出最终结果. 2.下面用for循环实现sin的算法,程序代码如下: #incl ...

  3. 有道算法题--排序之桶排序实现求排序后相邻最大差值问题

    前言 一直误以为写文章太耗费费时间,昨日为尊敬高贵帅气逼人的导师所一语惊醒(未一鸣惊人之日,绝不提尊师名讳,嗯,没错),分享才是程序员最快的提升: 今天开始,做不到多写多练,就不是诚实善良的南方小菜啦 ...

  4. 【POJ - 2349】【UVA - 10369】 Arctic Network(最小生成树求权值第k大的边)(内附两种算法)

    题干: The Department of National Defence (DND) wishes to connect several northern outposts by a wirele ...

  5. 拼题---求链式线性表的倒数第K项(两种算法的比较)

    7-17 求链式线性表的倒数第K项 (20 分) 给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字. 输入格式: 输入首先给出一个正整数K,随后是若干正整数,最后以一个负整数表 ...

  6. 大数求乘法逆元c语言,乘法逆元(编程计算)+两道版题

    前言 看到这里的小盆友们千万不要以为这个东西很难,其实就是个1+1->1(1个定义+1个定理->1坨乘法逆元).Let's begin.web 有关乘法逆元定义 这个咱们就不要玩笑了,来, ...

  7. 前缀树算法模板秒杀 5 道算法题

    后台回复进群一起刷力扣 点击卡片可搜索关键词

  8. 二叉树11:完全二叉树的节点个数

    Leetcode 222.完全二叉树的节点个数 要求是 给出一个完全二叉树,求出该树的节点个数. 完全二叉树的节点数其实是可以在找到最后一层最右侧的元素之后直接使用公式计算的.这里我们需要先明确什么是 ...

  9. [01背包] 背包问题求具体方案(01背包+求方案数+思维)

    文章目录 0. 前言 1. 01背包+求方案数+思维 0. 前言 相关: [背包] 背包问题算法模板(模板) 1. 01背包+求方案数+思维 12. 背包问题求具体方案 求方案数也是背包问题.dp 的 ...

最新文章

  1. Instagram赢家通吃照片社交市场 对手一个个只有关门大吉
  2. ORA-06502 when awr report produce
  3. 瑞星个人安全产品又添新丁
  4. CentOS 6.3编译安装Nginx1.2.2+MySQL5.5.25a+PHP5.4.5
  5. acer清理工具 clear下载_放下偏见,这些国内大厂出品的工具资源,免费又良心!...
  6. oracle 联表求和不重复_别再瞎忙了,Excel多表格求和用这4个方法分分钟完成的事...
  7. DOM和Diff算法你应该知道的那些事,快收藏!
  8. LeetCode 337. 打家劫舍 III(记忆化+递归)
  9. 涨价是必然!华为P40系列今天发布,首发价再曝光
  10. 库查询所有表的权限_JSW 基于WEB的MSSQL数据库查询平台
  11. 有关objc中的单例
  12. 安装 卸载 mysql linux,Linux 下MySQL 安装与卸载
  13. wake on LAN: 三分钟实现从Linux和Windows设备上远程唤醒设备
  14. Apache doris Datax DorisWriter扩展使用方法
  15. 透镜成像原理,眼球成像原理,小孔成像原理
  16. 深度学习中的数据增强(上)
  17. java加密与解密-核心包中的部分API(2)
  18. python中led是什么意思_用于检测LED闪光灯的Python库
  19. catia曲面设计从入门到精通_CATIA+V5曲面设计从入门到精通_11685491.pdf
  20. [从零开始学习FPGA编程-56]:视野篇-常见概念:chip(芯片)、chipset(芯片组)、chiplet(芯粒)、die(裸片)的区别

热门文章

  1. c++ 外部组件发生异常_谁再悄咪咪的吃掉异常,我上去就是一 JIO
  2. Windows IIS配置Jsp和php环境方法
  3. 将查询后的数据导入到其他表中
  4. 第十八篇:java操作Excel要处理和分辨的几个概念
  5. 初探运算符重载------(减号)
  6. 用友U8 归纳采购退货结算三种情况
  7. 小学生四则运算出题程序 无操作界面java版 简单的运用java中一些基本操作
  8. 关于ios app发布的中间证书的要求--解决WWDR证书过期方案
  9. 基于Android Studio搭建Android应用开发环境
  10. 使用Flutter之后,我们的CPU占用率降了50%