Advertisement
Guest User

Untitled

a guest
Jan 24th, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.99 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. struct treeNode
  4. {
  5. char data;
  6. treeNode* left;
  7. treeNode* right;
  8. };
  9.  
  10. int level(treeNode* node)
  11. {
  12. if (!node)
  13. return 0;
  14. return std::max(level(node->left),level(node->right)) + 1;
  15. }
  16.  
  17. treeNode* insertNode(char data, treeNode* root)
  18. {
  19. if (!root)
  20. {
  21. root = new treeNode;
  22. root->data = data;
  23. root->left = root->right = 0;
  24. return root;
  25. }
  26. if (root->data < data)
  27. root->right = insertNode(data,root->right);
  28. else
  29. root->left = insertNode(data,root->left);
  30. }
  31.  
  32. void printTree(treeNode* root)
  33. {
  34. if (root)
  35. {
  36. printTree(root->left);
  37. std::cout << root->data << ' ';
  38. printTree(root->right);
  39. }
  40. }
  41.  
  42. bool isLeaf(treeNode* node)
  43. {
  44. if (node)
  45. return !node->left && !node->right;
  46. return false;
  47. }
  48.  
  49. void removeL(treeNode* node)
  50. {
  51. if (!node)
  52. return;
  53.  
  54. if (isLeaf(node->left))
  55. {
  56. treeNode* del = node->left;
  57. node->left = 0;
  58. delete del;
  59. }
  60.  
  61. if (isLeaf(node->right))
  62. {
  63. treeNode* del = node->right;
  64. node->right = 0;
  65. delete del;
  66. }
  67.  
  68. if (!isLeaf(node->left) && !isLeaf(node->right))
  69. {
  70. removeL(node->left);
  71. removeL(node->right);
  72. }
  73. }
  74.  
  75. void prune(treeNode* node)
  76. {
  77. if (node)
  78. {
  79. int leftLevel = level(node->left);
  80. int rightLevel = level(node->right);
  81. while (leftLevel != rightLevel)
  82. {
  83. if (leftLevel > rightLevel)
  84. {
  85. removeL(node->left);
  86. --leftLevel;
  87. }
  88. else if (leftLevel < rightLevel)
  89. {
  90. removeL(node->right);
  91. --rightLevel;
  92. }
  93. }
  94. }
  95. }
  96.  
  97. void deleteTree(treeNode* root)
  98. {
  99. if (root)
  100. {
  101. deleteTree(root->left);
  102. deleteTree(root->right);
  103. delete root;
  104. }
  105. }
  106.  
  107. int main()
  108. {
  109. return 0;
  110. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement