fork download
  1. #include <iostream>
  2.  
  3. struct node {
  4. int data;
  5. struct node *left;
  6. struct node *right;
  7. };
  8.  
  9. void add_node(struct node *&root, int data) {
  10. if (root == 0) {
  11. root = new struct node;
  12. root->data = data;
  13. root->left = root->right = 0;
  14. return;
  15. }
  16.  
  17. if (data < root->data)
  18. add_node(root->left, data);
  19. else
  20. add_node(root->right, data);
  21. }
  22.  
  23. constexpr int N = 4;
  24. void vomit_tree(struct node *root, int c) {
  25. if (root == 0)
  26. return;
  27. vomit_tree(root->left, c + N);
  28. for (int i = 0; i < c; i++) std::cout << ' ';
  29. std::cout << root->data << std::endl;
  30. vomit_tree(root->right, c + N);
  31. }
  32.  
  33. void release_tree(struct node *&root) {
  34. if (root == 0)
  35. return;
  36. release_tree(root->left);
  37. release_tree(root->right);
  38. delete root;
  39. root = 0;
  40. }
  41.  
  42. int main() {
  43. struct node *root = 0;
  44. add_node(root, 50);
  45. add_node(root, 20);
  46. add_node(root, 70);
  47. add_node(root, 10);
  48. add_node(root, 25);
  49. add_node(root, 65);
  50. add_node(root, 80);
  51. add_node(root, 8);
  52. add_node(root, 12);
  53. add_node(root, 62);
  54. add_node(root, 75);
  55. add_node(root, 90);
  56.  
  57. vomit_tree(root, 0);
  58.  
  59. release_tree(root);
  60. return 0;
  61. }
  62. /* end */
  63.  
Success #stdin #stdout 0s 4504KB
stdin
Standard input is empty
stdout
            8
        10
            12
    20
        25
50
            62
        65
    70
            75
        80
            90