fork(1) download
  1. void postorderNoR(const Node *root)
  2. {
  3. stack<const Node*> s;
  4. const Node *itr = root;
  5.  
  6. while (itr || !s.empty())
  7. {
  8. if (!itr)
  9. {
  10. while (!s.empty() && itr == s.top()->right)
  11. {
  12. itr = s.top();
  13. s.pop();
  14. printf("%d ",itr->value);
  15. }
  16.  
  17. itr = s.empty() ? NULL : s.top()->right;
  18. }
  19. else
  20. {
  21. s.push(itr);
  22. itr = itr->left;
  23. }
  24. }
  25. }
  26.  
  27. void preorderNoR(const Node *root)
  28. {
  29. stack<const Node*> s;
  30. const Node *itr = root;
  31.  
  32. while (itr || !s.empty())
  33. {
  34. if (!itr)
  35. {
  36. itr = s.top();
  37. s.pop();
  38. itr = itr->right;
  39. }
  40. else
  41. {
  42. printf("%d ",itr->value);
  43. s.push(itr);
  44. itr = itr->left;
  45. }
  46. }
  47. }
  48.  
  49. void inorderNoR(const Node *root)
  50. {
  51. stack<const Node*> s;
  52. const Node *itr = root;
  53.  
  54. while (itr || !s.empty())
  55. {
  56. if (!itr)
  57. {
  58. itr = s.top();
  59. s.pop();
  60. printf("%d ",itr->value);
  61. itr = itr->right;
  62. }
  63. else
  64. {
  65. s.push(itr);
  66. itr = itr->left;
  67. }
  68. }
  69. }
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty