剑指OFFER----面试题36. 二叉搜索树与双向链表
链接:https://leetcode-cn.com/problems/er-cha-sou-suo-shu-yu-shuang-xiang-lian-biao-lcof/
代码:
/* // 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* treeToDoublyList(Node* root) { if(!root) return nullptr; Node* head = nullptr, *pre = nullptr; helper(root, head, pre); head->left = pre; pre->right = head; return head; } void helper(Node* root, Node*& head, Node*& pre) { if(!root) return; helper(root->left, head, pre); if(!head) { head = root; pre = root; } else { pre->right = root; root->left = pre; pre = root; } helper(root->right, head, pre); } };