刷题笔记2022.2.28
- 两个二叉树进行覆盖,数字相加。
我的疑问在于,需要设置新树吗,还是说,以一个树为基础加上另一个树就可以了?
果断深度优先,因为广度优先找到兄弟节点太难了。
对一个节点进行合并之后,还要对该节点的左右子树分别进行合并。这是一个递归的过程。用递归真的使问题非常简单。只需要考虑三个基本情况,返回值,中间每部是怎么变的。
- 填充它的每个 next 指针,让这个指针指向其下一个右侧节点。最后输出是层序遍历的,层序遍历用什么?队列or数组。
我的方法思维是对的但过程有点迷。
按层遍历的方法。While循环的条件是队列不空,初始root进入队列。While里有个for循环根据本层几个,也就是队列大小遍历。一旦给ptr赋值为队头,就pop,但这个头其实还在,被ptr保存着。在for每一次循环的时候干着4件事:重新赋值ptr为头,pop头;如果本层有下一个,next就指向下一个,这里的下一个就是本次的队头;如果ptr有左,左入队;右同上。
初始next就是null不用管他。
- 反转链表
一看我就觉得是递归(很不好理解),但是递归的精髓是什么呢,
迭代是更好理解的。需要三个指针,前,当下,以后来从前往后的改变curr的指向。
还有一种,就是只改变值,遍历一遍创建一个新链表反着赋值。
4.很简单的一个删除链表中的重复值,知道清楚是if else关系就没错。