- 题目描述
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
- 题目解析
其实就是中序遍历。
class Solution {
public:
    TreeNode* Convert(TreeNode* pRootOfTree)
	{
		if (pRootOfTree == NULL)
			return pRootOfTree;
		pRootOfTree = ConvertCore(pRootOfTree);
		while (pRootOfTree->left)
			pRootOfTree = pRootOfTree->left;
		return pRootOfTree;
	}
	TreeNode* ConvertCore(TreeNode* root){
		if (root == NULL)
			return root;
		if (root->left != NULL){
			TreeNode* left = ConvertCore(root->left);
			while (left->right)
				left = left->right;
			left->right = root;
			root->left = left;
		}
		if (root->right != NULL){
			TreeNode* right = ConvertCore(root->right);
			while (right->left)
				right = right->left;
			right->left = root;
			root->right = right;
		}
		return root;
	}
};