Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<queue>
- #include<sstream>
- class TreeNode{
- private:
- TreeNode *left, *right, *parent;
- char data;
- public:
- TreeNode() : left(0), right(0), parent(0), data('x'){};
- TreeNode(char s) : left(0), right(0), parent(0), data(s){};
- friend class BT;
- };
- class BT{
- private:
- TreeNode *root;
- public:
- BT() : root(0){};
- BT(const char* str){
- std::stringstream ss;
- ss << str;
- root = new TreeNode;
- ss >> root->data;
- BT::LevelorderConstruct(ss);
- }
- void LevelorderConstruct(std::stringstream &ss);
- };
- void BT::LevelorderConstruct(std::stringstream &ss){
- std::queue<TreeNode*> q;
- TreeNode* current = root;
- char data;
- while (ss >> data){
- if (data != 'x'){
- TreeNode* newNode = new TreeNode(data);
- newNode->parent = current;
- current->left = newNode;
- q.push(newNode);
- }
- if (!(ss >> data))
- break;
- if (data != 'x'){
- TreeNode* newNode = new TreeNode(data);
- newNode->parent = current;
- current->right = newNode;
- q.push(newNode);
- }
- current = q.front();
- q.pop();
- }
- }
- int main() {
- const char *c = "A B C D x F x H I x K";
- BT BT(c);
- return 0;
- }
Add Comment
Please, Sign In to add comment