题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
思路:
class Solution {
public:
TreeNode* Convert(TreeNode* pRootOfTree)
{
TreeNode* NodeList = nullptr;
helper(pRootOfTree, &NodeList);
while (NodeList != nullptr&&NodeList->left != nullptr)
NodeList = NodeList->left;
return NodeList;
}
void helper(TreeNode* Node,TreeNode** NodeList)
{
if (Node == nullptr)
return;
TreeNode* cur = Node;
if (cur->left!=nullptr)
helper(cur->left,NodeList);
cur->left = *NodeList;
if (*NodeList != nullptr)
(*NodeList)->right = cur;
(*NodeList) = cur;
if (cur->right != nullptr)
helper(Node->right, NodeList);
}
};