二叉搜索树与双向链表(剑指offer)

题目描述

输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
 
复杂问题可以分为几个小的简单的问题,并递归的解决。和前几天我没做出来的题有相似之处,借鉴借鉴。
 
方法一:遍历
为什么用中序遍历而不用其他的,是因为中序遍历顺序是左跟右,正好从小到大遍历搜索树。
用栈模拟递归思想。

 方法二:递归法

分析:

  1、先将左子树连成链表,并返回表头

  2、判断左子树是否为空,不为空就和根节点连上。

  3、将右子树连成链表,并返回表头

  4、判断右子树是否为空,不为空就和根节点连上。

这个方法秒就秒在递归的使用上,通过递归将子树连成链表。还有返回值的设计上,一般这种情况需要测试才能想到。所以以后做题遇到很迷糊的地方,不防先举一个例子,一个例子跑通之后再按边缘条件修补漏洞。

苟有恒,何必三更眠五更起;最无益,莫过一日暴十日寒。
原文地址:https://www.cnblogs.com/shaer/p/10473924.html