码完第一次编译运行居然就成功了。。。高兴~
问题描述:
输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。例如:
10
/ \
6 14
/ \ / \
4 8 12 16
转换成双向链表
4=6=8=10=12=14=16
算法:
如果没有“不能创建任何新的结点”的限制,只需进行一次中序遍历,对每个节点的data值构造一个新节点即可。
由于条件限制,现在我们只能用现有的节点,调整他们的指针指向,把查找树转化为双向链表。算法完成后,原来的查找树也不存在了。
与中序遍历相似,我们采用递归:将节点t的左右子树转化为的链表链接到t的左右两边。
值得注意的是,t的左右子树的链表返回值是不同的,t->left应返回链表的尾节点(最大的