Guest User

Untitled

a guest
Feb 22nd, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.11 KB | None | 0 0
  1. #include<iostream>
  2. #include<queue>
  3. #include<sstream>
  4.  
  5. class TreeNode{
  6. private:
  7. TreeNode *left, *right, *parent;
  8. char data;
  9. public:
  10. TreeNode() : left(0), right(0), parent(0), data('x'){};
  11. TreeNode(char s) : left(0), right(0), parent(0), data(s){};
  12.  
  13. friend class BT;
  14. };
  15.  
  16. class BT{
  17. private:
  18. TreeNode *root;
  19. public:
  20. BT() : root(0){};
  21. BT(const char* str){
  22. std::stringstream ss;
  23. ss << str;
  24. root = new TreeNode;
  25. ss >> root->data;
  26. BT::LevelorderConstruct(ss);
  27. }
  28.  
  29. void LevelorderConstruct(std::stringstream &ss);
  30. };
  31.  
  32. void BT::LevelorderConstruct(std::stringstream &ss){
  33.  
  34. std::queue<TreeNode*> q;
  35. TreeNode* current = root;
  36. char data;
  37.  
  38. while (ss >> data){
  39. if (data != 'x'){
  40. TreeNode* newNode = new TreeNode(data);
  41. newNode->parent = current;
  42. current->left = newNode;
  43. q.push(newNode);
  44. }
  45. if (!(ss >> data))
  46. break;
  47. if (data != 'x'){
  48. TreeNode* newNode = new TreeNode(data);
  49. newNode->parent = current;
  50. current->right = newNode;
  51. q.push(newNode);
  52. }
  53. current = q.front();
  54. q.pop();
  55. }
  56. }
  57.  
  58. int main() {
  59. const char *c = "A B C D x F x H I x K";
  60. BT BT(c);
  61. return 0;
  62. }
Add Comment
Please, Sign In to add comment