刷题笔记2022.2.28tree

刷题笔记2022.2.28

  1. 两个二叉树进行覆盖,数字相加。

我的疑问在于,需要设置新树吗,还是说,以一个树为基础加上另一个树就可以了?

果断深度优先,因为广度优先找到兄弟节点太难了。

对一个节点进行合并之后,还要对该节点的左右子树分别进行合并。这是一个递归的过程。用递归真的使问题非常简单。只需要考虑三个基本情况,返回值,中间每部是怎么变的。

  1. 填充它的每个 next 指针,让这个指针指向其下一个右侧节点。最后输出是层序遍历的,层序遍历用什么?队列or数组。

我的方法思维是对的但过程有点迷。

按层遍历的方法。While循环的条件是队列不空,初始root进入队列。While里有个for循环根据本层几个,也就是队列大小遍历。一旦给ptr赋值为队头,就pop,但这个头其实还在,被ptr保存着。在for每一次循环的时候干着4件事:重新赋值ptr为头,pop头;如果本层有下一个,next就指向下一个,这里的下一个就是本次的队头;如果ptr有左,左入队;右同上。

初始next就是null不用管他。

  1. 反转链表

一看我就觉得是递归(很不好理解),但是递归的精髓是什么呢,

迭代是更好理解的。需要三个指针,前,当下,以后来从前往后的改变curr的指向。

还有一种,就是只改变值,遍历一遍创建一个新链表反着赋值。

4.很简单的一个删除链表中的重复值,知道清楚是if else关系就没错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值