转自:http://www.fgdsb.com/tags/BST/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
DoublyListNode* bst_to_list(TreeNode* root) { DoublyListNode dum; auto cur = &dum; function<void(TreeNode*)> dfs = [&](TreeNode* node) { if(!node) return; dfs(node->left); auto new_node = new DoublyListNode(node->val); cur->next = new_node; new_node->prev = cur; cur = new_node; dfs(node->right); }; dfs(root); if(dum.next) dum.next->prev = nullptr; return dum.next; }
|