二叉树数据结构TreeNode可用来表示单向链表(其中left置空,right为下一个链表节点)。实现一个方法,把二叉搜索树转换为单向链表,要求依然符合二叉搜索树的性质,转换操作应是原址的,也就是在原始的二叉搜索树上直接修改。
返回转换后的单向链表的头节点
解题思路:首先肯定是中序遍历,每次遍历把当前节点设置为上一节点的右节点,然后把当前节点的左节点设置成NULL
class Solution {
public:
TreeNode* ans = new TreeNode(0) , *cur = ans;
TreeNode* convertBiNode(TreeNode* root) {
mid(root);
return ans->right;
}
void mid(TreeNode* root)
{
if(root == nullptr) return;
mid(root->left);
root->left = NULL;
cur->right = root;
cur = root;
mid(root->right);
}
};