二叉树
1.
![](https://img-blog.csdnimg.cn/319df4748d95489abc4a8120a3ce0c0e.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/9ce8e81fa7a64572a51be43973f746be.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/8c6101dc1f1c42f1ba81a86d570bca9b.png)
2.
![在这里插入图片描述](https://img-blog.csdnimg.cn/15c9e8212db744b9a1566f0a10ca2af3.png)
思想就是 原来的层次遍历 是自上而下,自左向右的,现在反着来,应该想到栈
原层次遍历代码(借助队列):
![在这里插入图片描述](https://img-blog.csdnimg.cn/160afe4c53064af38df16cee8b640526.png)
3.
![在这里插入图片描述](https://img-blog.csdnimg.cn/041157e0f3484123a3cc8edce7be9304.png)
用层次遍历解决:需要引入额外的动态计数(last 与 level),last 来记录每一层最右边节点在队列中的下标,当出队 队头(front) 等于last时候,此时可以使 level 加 1, 并改变last的值(下一层最右边的节点 在队列中的下标)
4.
![在这里插入图片描述](https://img-blog.csdnimg.cn/e417fe4e28f24f5bb38928a3ebd8e800.png)
例子:先序和中序确定一棵二叉树
![在这里插入图片描述](https://img-blog.csdnimg.cn/2b0b580dd77443a2bd08b80d4a39c1c7.png)
5.
![在这里插入图片描述](https://img-blog.csdnimg.cn/b40ce7d893224aa8a6f01d9faf0abcc6.png)
利用完全二叉树的性质:发现一个节点位置为NULL 之后,那么它的后面也一定是NULL
可结合改动的层次遍历来判断(把NULL也存入队列)
![在这里插入图片描述](https://img-blog.csdnimg.cn/0a4199c239a843038c23e3a6148502e4.png)
6.
![在这里插入图片描述](https://img-blog.csdnimg.cn/129481f0a4c144e0aa1749b744c22811.png)
递归来做