Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.83 KB | None | 0 0
  1. #include "pt4.h"
  2. using namespace std;
  3.  
  4. void deleteNode(PNode& tree);
  5.  
  6. PNode searchNode(PNode tree);
  7.  
  8. PNode searchRoot(PNode tree);
  9.  
  10. void Solve()
  11. {
  12. Task("Tree71");
  13. PNode ptr;
  14. pt >> ptr;
  15. PNode root = searchRoot(ptr);
  16. if (root == ptr) {
  17. deleteNode(root);
  18. } else {
  19. deleteNode(ptr);
  20. }
  21. pt << root;
  22. }
  23.  
  24. void deleteNode(PNode& tree) {
  25. PNode temp;
  26. if (tree->Left == nullptr) {
  27. if (tree->Parent != nullptr) {
  28. if (tree->Parent->Left == tree) {
  29. tree->Parent->Left = tree->Right;
  30. } else {
  31. tree->Parent->Right = tree->Right;
  32. }
  33. }
  34. if (tree->Right != nullptr) {
  35. tree->Right->Parent = tree->Parent;
  36. }
  37. temp = tree->Right;
  38. delete tree;
  39. tree = temp;
  40. } else if (tree->Right == nullptr) {
  41. if (tree->Parent != nullptr) {
  42. if (tree->Parent->Left == tree) {
  43. tree->Parent->Left = tree->Left;
  44. } else {
  45. tree->Parent->Right = tree->Left;
  46. }
  47. }
  48. if (tree->Left != nullptr) {
  49. tree->Left->Parent = tree->Parent;
  50. }
  51. temp = tree->Left;
  52. delete tree;
  53. tree = temp;
  54. } else {
  55. PNode del = searchNode(tree->Right);
  56. if (del->Parent != tree) {
  57. del->Parent->Left = del->Right;
  58. } else {
  59. tree->Right = del->Right;
  60. }
  61. if (del->Right != nullptr) {
  62. del->Right->Parent = del->Parent;
  63. }
  64. tree->Data = del->Data;
  65. delete del;
  66. }
  67. }
  68.  
  69. PNode searchNode(PNode tree) {
  70. if (tree->Left == nullptr) {
  71. return tree;
  72. }
  73. return searchNode(tree->Left);
  74. }
  75.  
  76. PNode searchRoot(PNode tree) {
  77. if (tree->Parent == nullptr) {
  78. return tree;
  79. }
  80. return searchRoot(tree->Parent);
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement