二叉树的Morris遍历
一.树型dp基本结构
![](https://img2022.cnblogs.com/blog/2906588/202207/2906588-20220726094444331-1192056318.png)
一种分类:分头节点 X 参不参与
![](https://img2022.cnblogs.com/blog/2906588/202207/2906588-20220726101234808-1585595072.png)
然后定返回值结构,造黑盒。。如下:
![](https://img2022.cnblogs.com/blog/2906588/202207/2906588-20220726101650408-1927927565.png)
然后写递归函数:
![](https://img2022.cnblogs.com/blog/2906588/202207/2906588-20220726101755652-1603247838.png)
(可见)
二.快乐值问题
1.分析:
2.确定递归返回值
3.递归函数
4.主函数
三.Morris遍历
1.介绍:
其他遍历方式做不到额外空间复杂度O(1)
2.概要
##3.线索二叉树
非叶子节点都会来到两次,叶子节点仅一次。而用递归函数会每个节点到达三次。
3.代码
4.利用Morris改写递归遍历
1)先序遍历:
2)中序遍历:
3)后序遍历:
逆序操作:看成单链表的逆序打印,打印完成后再恢复即可。
逆序函数:
主函数:
5.Morris的例子
判断是否为搜索二叉树:使用中序遍历的Morris,将打印行为改为比较行为。
6.Morris与二叉树的递归套路比较
如果必须要进行第三次信息的强整合,即用一个节点的结果需要左子树和右子树的结果得到,则使用递归套路为最优解。当不必时Morris为最优解。