一、题目描述
循环输入。每组数据给定一棵二叉搜索树,请按 中序遍历 将其重新排列为一棵递增顺序搜索树,使树中最左边的节点成为树的根节点,并且每个节点没有左子节点,只有一个右子节点。当没有任何输入时,程序结束。
二、解题思路
难度:🔴🔴🔴🔴⚪
1)根据 中序遍历 的思路,左子树遍历完,遍历根,再遍历右子树。加上二叉搜索树的性质,左子树所有元素 一定小于 根元素,右子树所有元素 一定大于 根元素;
2)对于 左子树,需要返回一个 值最小 的结点,让它指向 根结点;对于 右子树,需要返回一个 值最大 的结点,并且让 根结点 的right
指针指向它;
3)基于上述几个点,需要提供一个函数,返回一颗子树的 最小结点 和 最大结点。
这是一个遍历整棵树的过程,每个结点访问一次,时间复杂度为