输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。
这个题是看题解写出来的:
/* // Definition for a Node. class Node { public: int val; Node* left; Node* right; Node() {} Node(int _val) { val = _val; left = NULL; right = NULL; } Node(int _val, Node* _left, Node* _right) { val = _val; left = _left; right = _right; } }; */ class Solution { public: Node* pre, * head; Node* treeToDoublyList(Node* root) { if (root == nullptr) { return root; } inOrder(root); head->left = pre; pre->right = head; return head; } //中序遍历 void inOrder(Node * cur) { if (!cur) { return; } inOrder(cur->left); if (pre == nullptr) { head = cur; } else { pre->right = cur; } cur->left = pre; pre = cur; inOrder(cur->right); } };https://leetcode-cn.com/problems/er-cha-sou-suo-shu-yu-shuang-xiang-lian-biao-lcof/