Advertisement
wendy890711

二元樹1122

Nov 22nd, 2019
281
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.54 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. class Treenode{
  6. public:
  7. int data;
  8. Treenode*Lnode;
  9. Treenode*Rnode;
  10. Treenode(int in)
  11. {
  12. data = in;
  13. Lnode = NULL;
  14. Rnode = NULL;
  15. }
  16. };
  17.  
  18. class Btree{
  19. public:
  20. Treenode*root = NULL;
  21. void add_Treenode(int value);
  22. void preorder(Treenode*ptr);
  23. void inorder(Treenode*ptr);
  24. void postorder(Treenode*ptr);
  25. };
  26.  
  27. void Btree::add_Treenode(int value)
  28. {
  29. if (root == NULL)
  30. {
  31. root = new Treenode(value);
  32. return;
  33. }
  34. else
  35. {
  36. Treenode*ptr = root;
  37. Treenode*x = new Treenode(value);
  38. while (true)
  39. {
  40. if (value > ptr->data) //往右
  41. {
  42. if (ptr->Rnode != NULL)
  43. ptr = ptr->Rnode;
  44. else
  45. {
  46. ptr->Rnode = x;
  47. return;
  48. }
  49. }
  50. else //往左
  51. {
  52. if (ptr->Lnode != NULL)
  53. ptr = ptr->Lnode;
  54. else
  55. {
  56. ptr->Lnode = x;
  57. return;
  58. }
  59. }
  60. }
  61. }
  62. }
  63.  
  64. void Btree::inorder(Treenode*ptr)
  65. {
  66. if (ptr != NULL)
  67. {
  68. inorder(ptr->Lnode);
  69. cout << ptr->data << endl;
  70. inorder(ptr->Rnode);
  71. }
  72. }
  73.  
  74. void Btree::preorder(Treenode*ptr)
  75. {
  76. if (ptr != NULL)
  77. {
  78. cout << ptr->data << endl;
  79. inorder(ptr->Lnode);
  80. inorder(ptr->Rnode);
  81. }
  82. }
  83.  
  84. void Btree::postorder(Treenode*ptr)
  85. {
  86. if (ptr != NULL)
  87. {
  88. inorder(ptr->Lnode);
  89. inorder(ptr->Rnode);
  90. cout << ptr->data << endl;
  91. }
  92. }
  93.  
  94. void main()
  95. {
  96. Btree tr;
  97. tr.add_Treenode(8);
  98. tr.add_Treenode(17);
  99. tr.add_Treenode(31);
  100. tr.add_Treenode(9);
  101. tr.add_Treenode(98);
  102. tr.add_Treenode(12);
  103. tr.inorder(tr.root);
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement