TREE.CPP
上传用户:wszmarenbt
上传日期:2013-04-26
资源大小:2552k
文件大小:2k
源码类别:

Windows编程

开发平台:

Visual C++

  1. #include "Tree.h"
  2. void TREE::BUILD_TREE(NODE *&Root,int Data)
  3. {
  4. NODE *TEMP;
  5. NODE *BACKTEMP;
  6. if(Root == 0)
  7. {
  8. Root=new NODE;
  9. Root->LEFT=Root->RIGHT=0;
  10. Root->DATA=Data;
  11. }
  12. else
  13. {
  14. TEMP=Root;
  15. while(TEMP!=0)
  16. {
  17. BACKTEMP=TEMP;
  18. if(Data<(TEMP->DATA)) TEMP=TEMP->LEFT;
  19. else TEMP=TEMP->RIGHT;
  20. }
  21. if(Data<(BACKTEMP->DATA))
  22. {
  23. NODE *NEWNODE=new NODE;
  24. NEWNODE->LEFT=NEWNODE->RIGHT=0;
  25. NEWNODE->DATA=Data;
  26. BACKTEMP->LEFT=NEWNODE;
  27. }
  28. else
  29. {
  30. NODE *NEWNODE=new NODE;
  31. NEWNODE->LEFT=NEWNODE->RIGHT=0;
  32. NEWNODE->DATA=Data;
  33. BACKTEMP->RIGHT=NEWNODE;
  34. }
  35. }
  36. }
  37. void TREE::LR_PREORDER(NODE *Root)
  38. {
  39. if(Root!=NULL)
  40. {
  41. printf("%d  ",Root->DATA);
  42. LR_PREORDER(Root->LEFT);
  43. LR_PREORDER(Root->RIGHT);
  44. }
  45. }
  46. void TREE::LR_INORDER(NODE *Root)
  47. {
  48. if(Root!=NULL)
  49. {
  50. LR_INORDER(Root->LEFT);
  51. printf("%d  ",Root->DATA);
  52. LR_INORDER(Root->RIGHT);
  53. }
  54. }
  55. void TREE::LR_POSTORDER(NODE *Root)
  56. {
  57. if(Root!=NULL)
  58. {
  59. LR_POSTORDER(Root->LEFT);
  60. LR_POSTORDER(Root->RIGHT);
  61. printf("%d  ",Root->DATA);
  62. }
  63. }
  64. void TREE::RL_PREORDER(NODE *Root)
  65. {
  66. if(Root!=NULL)
  67. {
  68. printf("%d  ",Root->DATA);
  69. RL_PREORDER(Root->RIGHT);
  70. RL_PREORDER(Root->LEFT);
  71. }
  72. }
  73. void TREE::RL_INORDER(NODE *Root)
  74. {
  75. if(Root!=NULL)
  76. {
  77. RL_INORDER(Root->RIGHT);
  78. printf("%d  ",Root->DATA);
  79. RL_INORDER(Root->LEFT);
  80. }
  81. }
  82. void TREE::RL_POSTORDER(NODE *Root)
  83. {
  84. if(Root!=NULL)
  85. {
  86. RL_POSTORDER(Root->RIGHT);
  87. RL_POSTORDER(Root->LEFT);
  88. printf("%d  ",Root->DATA);
  89. }
  90. }