力扣二叉树
力扣当中关于二叉树的部分
llyLLY666
这个作者很懒,什么都没留下…
展开
-
力扣199.二叉树的右视图,层序遍历解决
思路:我们需要返回这样的一个一维数组,我们就需要搞清楚每个数组元素在二叉树的层序遍历当中都有着什么的共性。通过观察我们不难发现,数组当中的每个元素都是当前层的最后一个,这有一个什么性质呢,就是此时的size=0,那么通过这个我们就在层序遍历当中加一行代码就可以了。层序遍历不会的话,建议一下先看这篇文章。原创 2024-09-04 21:40:24 · 332 阅读 · 0 评论 -
力扣144 二叉树的前序遍历,包含递归遍历和非递归遍历
我们创造一个栈st来辅助我们解决问题,我们先将根节点放入栈st当中,然后我们如果要想得到前序遍历的序列的话,自然是一个中左右的顺序,那么我们就需要先取出当前栈顶元素cur,也就是5,并放到ret数组里边。这道题其实就是一道非常基础而且典型的二叉树遍历的题目,对于二叉树的遍历我们有两种遍历方法,一种就是递归的遍历,还有一种就是非递归,用循环遍历。递归遍历的思路:这个其实就是一个老生常谈的问题了,没什么好说的,就是看当前节点cur是不是空,是的话就直接return,不是的话就依次递归的遍历其左右子树。原创 2024-09-04 16:33:57 · 309 阅读 · 0 评论 -
力扣429. N 叉树的层序遍历
思路:没啥好说的,考察的还是二叉树的层序遍历,这道题只需要注意一下节点的孩子数组的大小就行了,没啥难度。二叉树层序遍历不会的先看这篇文章。原创 2024-09-04 21:46:47 · 246 阅读 · 0 评论 -
力扣145,二叉树的后序遍历,包含递归遍历和非递归遍历
后序遍历的话和前序遍历都是很像的,我之前写过一篇前序的文章,在这里我就不赘述思路了,直接上代码了。这个下边是非递归的代码。原创 2024-09-04 16:43:34 · 280 阅读 · 0 评论 -
力扣111. 二叉树的最小深度
思路:这道题只是需要一个特殊的跳出条件,就是一个节点的左右孩子如果都是空的话,实际上就已经符合要求了,我们就应该立即跳出,结束程序,知道了这个之后就好办了。这道题和那个最大深度有相似之处,可以放到一起学习。原创 2024-09-04 22:07:08 · 207 阅读 · 2 评论 -
力扣107二叉树的层次遍历Ⅱ
思路:这道题的主题还是二叉树的层次遍历,层序遍历完了之后,我们可以将原先这次层序遍历得到的二维数组用一个一维数组的栈来储存,之后我们再根据栈的先进后出的特性,一步一步的出栈就行了,并将出栈得到的一维数组一次赋值给我们的目标二维数组ret即可。下面给出的是正常层序遍历的博客链接,如果正常的层次遍历还不会的话,建议先看完正常的层次遍历再来看本题。原创 2024-09-04 21:35:46 · 182 阅读 · 0 评论 -
力扣94二叉树的中序遍历。递归遍历的代码和非递归遍历的代码都有
我们一起来看啊,二叉树的中序遍历顺序是左中右,对应的这个二叉树的话,具体的中序遍历序列是 14256。也就是在当前节点为空的情况下,我们先改变一下cur,让cur=st.top(),然后弹出栈顶元素,并将原来的栈顶元素放到ret数组里边,并更新cur=cur->right.接着我们刚才举得例子,当前节点是1的左孩子为空,那么就先改变cur=st.top(),也就是cur重新变成了1节点,然会弹栈,栈顶元素是1,1就被放到了ret当中,之后cur就变成了1的右孩子,还是空,重复进行操作之后4被放到了栈里边。原创 2024-09-04 17:12:13 · 217 阅读 · 0 评论 -
力扣116与117. 填充每个节点的下一个右侧节点指针/II
思路:这道题就是说,对于每个树的节点,我们都增加了一个属性就是next,初始时,每个节点的next都是NULL。我们还知道,next指向的是当前节点的右边节点。以本题为例,4的next就是5,5的next就是6,6是7,7是NULL。那么我们发现了规律,对于每一个在队列当中的节点,只要他不是每一层的末尾节点,那么他的next总是指向他的队列当中下一个的元素。但是我在作答116的时候并没有考虑到116这道题的特殊性,也就是完美二叉树。我考虑的是117的情况,所以我的116和117的代码是一样的。原创 2024-09-04 21:59:07 · 198 阅读 · 0 评论 -
力扣104. 二叉树的最大深度
思路:所谓二叉树的最大深度,实际上就是利用了层次遍历当中的那两个while循环,第一个循环时while(!que.empty()),第二个是while(size--),实际上每一个while(size--)循环执行完一次后,都代表着一层的结束,我们就可以在这个while循环下边让depth变量++,最后返回depth即可。这道题很有意思,我们可以使用层序遍历通过一个队列来求解,也可以使用前序遍历等深度优先思想的遍历来求解。我先给出一个层序遍历求解的。原创 2024-09-04 22:03:20 · 260 阅读 · 1 评论 -
力扣637. 二叉树的层平均值
思路:没啥好说的,还是套用层序遍历的模板就行,在那二维数组当中的每一个一维数组当中算一下平均值就好了,没什么难度,主要考察的还是二叉树的层序遍历。原创 2024-09-04 21:44:04 · 299 阅读 · 0 评论 -
力扣102 二叉树的层序遍历
之后我们就开始循环,循环结束条件就是root为空,以上图举例子,我们把根节点3放进去之后,进行一次循环之后,,我们想让队列里边只剩下他的孩子节点就是9,20,而ret数组里面要有第一层的3。第二次循环的时候,按照层序遍历的顺序,应该在一个小循环里面循环两次,因为第二层有两个元素9和20.小循环里面先让队列首段出队,如果之前队列首端的左孩子不为空的话,队尾加左孩子,右孩子不为空加右孩子,小循环结束后,我们要将第二层的9和20放到ret当中。就这样一直循环,直到队列变空。原创 2024-09-04 18:45:06 · 210 阅读 · 2 评论 -
力扣515.在每个树行中找最大值
思路:没啥大的改变,主要还是根据二叉树的层序遍历得到那个二维数组之后,将二维数组当中的每一维中的最大值找出来并放到一个数组当中即可。原创 2024-09-04 21:49:35 · 220 阅读 · 0 评论