重建二叉树 题目给定节点数为 n 的二叉树的前序遍历和中序遍历结果,请重建出该二叉树并返回它的头结点。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出如下图所示提示:1.vin.length == pre.length2.pre 和 vin 均无重复元素3.vin出现的元素均出现在 pre里4.只需要返回根结点,系统会自动输出 2022-10-16 算法 > 二叉树 #算法
Flyweight模式 情景引入在本章中,我们将要学习Flyweight模式。 Flyweight是“轻量级”的意思,指的是拳击比赛中选手体重最轻的等级。顾名思义,该设计模式的作用是为了让对象变“轻”。 对象在计算机中是虚拟存在的东西,它的“重”和“轻”并非指实际重量,而是它们“所使用的内存大小”。使用内存多的对象就是“重”对象,使用内存少的对象就是“轻”对象。在Java中,可以通过以下语句生成Something类的实例 2022-10-16 设计模式 > Flyweight模式 #设计模式
输出二叉树的右视图 题目请根据二叉树的前序遍历,中序遍历恢复二叉树,并打印出二叉树的右视图 数据范围:100000≤n≤10000要求: 空间复杂度 O(n),时间复杂度 O(n) 如输入[1,2,4,5,3],[4,2,5,1,3]时,通过前序遍历的结果[1,2,4,5,3]和中序遍历的结果[4,2,5,1,3]可重建出以下二叉树: 所以对应的输出为[1,3,5]。 示例1 12输入:[1,2,4,5,3],[4, 2022-10-14 算法 > 二叉树 #算法
寻找二叉搜索树最近公共祖先 题目给定一棵二叉树(保证非空)以及这棵树上的两个节点对应的val值 o1 和 o2,请找到 o1 和 o2 的最近公共祖先节点。 数据范围:树上节点数满足 1≤n≤10^5, 节点值val满足区间 [0,n)要求:时间复杂度 O(n) 注:本题保证二叉树中每个节点的val值均不相同。 如当输入{3,5,1,6,2,0,8,#,#,7,4},5,1时,二叉树{3,5,1,6,2,0,8,#,#,7, 2022-10-13 算法 > 二叉树 #算法
Facade模式 情景引入程序这东西总是会变得越来越大。随着时间的推移,程序中的类会越来越多,而且它们之间相互关联,这会导致程序结构也变得越来越复杂。我们在使用这些类之前,必须先弄清楚它们之间的关系,注意正确的调用顺序。 特别是在调用大型程序进行处理时,我们需要格外注意那些数量庞大的类之间错综复杂的关系。不过与其这么做,不如为这个大型程序准备一个“窗口”。这样,我们就不必单独地关注每个类了,只需简单地对“窗口”提出 2022-10-13 设计模式 > Facade模式 #设计模式
Composite模式 情景引入在计算机的文件系统中,有“文件夹”的概念(在有些操作系统中,也称为“目录”)。文件夹里面既可以放人文件,也可以放人其他文件夹(子文件夹)。在子文件夹中,一样地既可以放入文件,也可以放人子文件夹。可以说,文件夹是形成了一种容器结构、递归结构。 我们接着再想一想。虽然文件夹与文件是不同类型的对象,但是它们都“可以被放人到文件夹中”。文件夹和文件有时也被统称为“目录条目”( directory 2022-10-13 设计模式 > Composite模式 #设计模式
Command模式 情景引入一个类在进行工作时会调用自己或是其他类的方法,虽然调用结果会反映在对象的状态中,但并不会留下工作的历史记录。 这时,如果我们有一个类,用来表示“请进行这项工作”的“命令”就会方便很多。每一项想做的工作就不再是“方法的调用”这种动态处理了,而是一个表示命令的类的实例,即可以用“物”来表示。要想管理工作的历史记录,只需管理这些实例的集合即可,而且还可以随时再次执行过去的命令,或是将多个过去的命 2022-10-13 设计模式 > Command模式 #设计模式
寻找二叉搜索树最近公共祖先 题目给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。1.对于该题的最近的公共祖先定义:对于有根树T的两个节点p、q,最近公共祖先LCA(T,p,q)表示一个节点x,满足x是p和q的祖先且x的深度尽可能大。在这里,一个节点也可以是它自己的祖先.2.二叉搜索树是若它的左子树不空,则左子树上所有节点的值均小于它的根节点的值; 若它的右子树不空,则右子树上所有节点的值均大于它的根节点的值3.所 2022-10-12 算法 > 二叉树 #算法
Decorator模式 情景引入假如现在有一块蛋糕,如果只涂上奶油,其他什么都不加,就是奶油蛋糕。如果加上草莓,就是草莓奶油蛋糕。如果再加上一块黑色巧克力板,上面用白色巧克力写上姓名,然后插上代表年龄的蜡烛,就变成了一块生日蛋糕。 不论是蛋糕、奶油蛋糕、草莓蛋糕还是生日蛋糕,它们的核心都是蛋糕。不过,经过涂上奶油,加上草莓等装饰后,蛋糕的味道变得更加甜美了,目的也变得更加明确了。 程序中的对象与蛋糕十分相似。首先有一个相 2022-10-12 设计模式 > Decorator模式 #设计模式
判断平衡二叉树 题目输入一棵节点数为 n 二叉树,判断该二叉树是否是平衡二叉树。在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。样例二叉树如图,为一颗平衡二叉树注:我们约定空树是平衡二叉树。 数据范围:n≤100, 树上节点的val值满足 1 2022-10-11 算法 > 二叉树 #算法