活跃农民
- 积分
- 417
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2018-9-9
- 最后登录
- 1970-1-1
|
打卡第11天
- 105:二叉树的重构:用了hashmap,存储的是inorder的内容。然后采用了迭代的方式,最后的base case就是简单的null节点的形式,因为helper函数在构造的过程中一直在构造根节点。感觉迭代的确是很神奇的一种方法,但是自己总是想不到这个helper函数应该有什么样的参数,应该怎么样进行构造。
- 572: subtree of another tree: 构造了一个equals函数,这个函数很强大,使用的也是递归的方式写,如果两个节点相同,那么所有的结构都是完全相同的,左右节点,以及左右节点的子节点。那么判断是不是subtree,其实只需要找到是不是有相同的那个节点即可。同时还有个迭代是那个函数本身,如果自己不是,那么就接着判断左节点是不是,是含那个子树的,右节点同理。
- 这题在剑指上面有一个变种题,就是说我们接受那种只是其中一部分的,比如说412,41;这个时候equals函数其实是直接换成是,用来判断的那个子树B,直接如果是null我们也返回true,但是给定的A是不能为空的,因为是需要有包含关系的。也就是说如果B = null, 那么A是不是null我都接受,但是如果B 不是null,但是A是null,那就是false。还有要注意B本身也可能是空集,所以sustree这个函数里面还是要加上B!= null 因为里面会给出B是空的case.
- 226:Invert binary tree。刷到了这道刷掉max howell的经典题,乍一想还是卡了,思想就是先各自交换,之后彼此交换。如果是null就return null。
- 101: symmetric tree: 构造了一个辅助函数isMirror,也就是说如果本身是对称的,那么照镜子,和本身其实应该是完全一样的.
|
|