二叉树的Morris遍历

一.树型dp基本结构

 
 一种分类:分头节点 X 参不参与
 
 
 然后定返回值结构,造黑盒。。如下:
 
 
 然后写递归函数:
 
 
 (可见)

二.快乐值问题

1.分析:

2.确定递归返回值

3.递归函数

4.主函数

三.Morris遍历

1.介绍:

其他遍历方式做不到额外空间复杂度O(1)

2.概要

##3.线索二叉树

非叶子节点都会来到两次,叶子节点仅一次。而用递归函数会每个节点到达三次。

3.代码

4.利用Morris改写递归遍历

1)先序遍历:

2)中序遍历:

3)后序遍历:

逆序操作:看成单链表的逆序打印,打印完成后再恢复即可。

逆序函数:

主函数:

5.Morris的例子

 判断是否为搜索二叉树:使用中序遍历的Morris,将打印行为改为比较行为。

6.Morris与二叉树的递归套路比较

如果必须要进行第三次信息的强整合,即用一个节点的结果需要左子树和右子树的结果得到,则使用递归套路为最优解。当不必时Morris为最优解。

posted @ 2022-07-27 16:00  这就叫做C++  阅读(47)  评论(0编辑  收藏  举报