Advertisement
Guest User

Untitled

a guest
Sep 22nd, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.92 KB | None | 0 0
  1. void bToDLL(Node *root, Node **head_ref)
  2. {
  3. stack<Node*> s;
  4. if (root == NULL) *head_ref = NULL;
  5. *head_ref = NULL;
  6. Node* prev = NULL;
  7. Node* curr;
  8. Node* trav = root->left;
  9. s.push(root);
  10. while (!s.empty())
  11. {
  12. while (trav!=NULL)
  13. {
  14. s.push(trav);
  15. trav = trav->left;
  16. }
  17. curr = s.top();
  18. if (*head_ref == NULL)
  19. {
  20. *head_ref = curr;
  21. prev = curr;
  22. }
  23. else
  24. {
  25. curr->left = prev;
  26. prev->right = curr;
  27. prev = curr;
  28. }
  29. trav = (s.top())->right;
  30. s.pop();
  31. }
  32.  
  33. Node* helper = NULL;
  34. if (*head_ref == NULL) cout << " " << endl << " " << endl;
  35. else
  36. {
  37. while ((*head_ref) != NULL)
  38. {
  39. cout << (*head_ref)->data << ' ';
  40. helper = (*head_ref);
  41. *head_ref = (*head_ref)->right;
  42. }
  43.  
  44. cout << endl;
  45. *head_ref = helper;
  46. while ((*head_ref) != NULL)
  47. {
  48. cout << (*head_ref)->data << ' ';
  49. (*head_ref) = (*head_ref)->left;
  50. }
  51. cout << endl;
  52.  
  53. }
  54.  
  55.  
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement