题目描述
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
复杂问题可以分为几个小的简单的问题,并递归的解决。和前几天我没做出来的题有相似之处,借鉴借鉴。
方法一:遍历
为什么用中序遍历而不用其他的,是因为中序遍历顺序是左跟右,正好从小到大遍历搜索树。
用栈模拟递归思想。
方法二:递归法
分析:
1、先将左子树连成链表,并返回表头
2、判断左子树是否为空,不为空就和根节点连上。
3、将右子树连成链表,并返回表头
4、判断右子树是否为空,不为空就和根节点连上。
这个方法秒就秒在递归的使用上,通过递归将子树连成链表。还有返回值的设计上,一般这种情况需要测试才能想到。所以以后做题遇到很迷糊的地方,不防先举一个例子,一个例子跑通之后再按边缘条件修补漏洞。