Advertisement
k0ske

Untitled

Dec 20th, 2022
803
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.01 KB | None | 0 0
  1. TreeNode<char>* treeStringHelper(std::string& s, int height, int currentIndexTree,int& currentIndexString) {
  2.     if (currentIndexTree <= 0 || currentIndexTree > height) {
  3.         return nullptr;
  4.     }
  5.  
  6.     if (height == currentIndexTree) {
  7.         if (currentIndexString < s.size()) {
  8.             currentIndexString++;
  9.             return new TreeNode<char>(s[currentIndexString - 1]);
  10.         }
  11.         return nullptr;
  12.     }
  13.     else {
  14.         TreeNode<char>* result = new TreeNode<char>(' ');
  15.  
  16.         result->left = treeStringHelper(s, height,currentIndexTree + 1, currentIndexString);
  17.         result->right = treeStringHelper(s, height,currentIndexTree + 1, currentIndexString);
  18.  
  19.         return result;
  20.     }
  21. }
  22.  
  23. TreeNode<char>* treeString(std::string s) {
  24.     size_t length = s.size();
  25.     int height = 1;
  26.     int lastLeavesLength = 1;
  27.     while (lastLeavesLength < length) {
  28.         height++;
  29.         lastLeavesLength *= 2;
  30.     }
  31.     int index = 0;
  32.     return treeStringHelper(s, height, 1, index);
  33. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement