| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- //
- // Created by 李洋 on 2023/8/14.
- //
- #ifndef LEECODE_C_TREE_H
- #define LEECODE_C_TREE_H
- struct TreeNode
- {
- int val;
- TreeNode *left;
- TreeNode *right;
- TreeNode() : val(0), left(nullptr), right(nullptr) {}
- TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
- TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
- };
- #include <iostream>
- #include <random>
- #include <queue>
- TreeNode *createRandomTree(int size)
- {
- if (size == 0)
- {
- return nullptr;
- }
- std::random_device rd;
- std::mt19937 gen(rd());
- std::uniform_int_distribution<int> dis(1, 100);
- std::queue<int> Q;
- std::queue<TreeNode *> T;
- for (int i = size; i > 0; --i)
- {
- Q.push(dis(gen));
- std::cout << Q.back() << " ";
- }
- std::cout << std::endl;
- TreeNode *head = new TreeNode(Q.front());
- T.push(head);
- Q.pop();
- while (!Q.empty())
- {
- if (T.front()->left != nullptr && T.front()->right != nullptr)
- {
- T.pop();
- }
- TreeNode *temp = new TreeNode(Q.front());
- Q.pop();
- if (T.front()->left == nullptr)
- {
- T.front()->left = temp;
- T.push(temp);
- continue;
- }
- if (T.front()->right == nullptr)
- {
- T.front()->right = temp;
- T.push(temp);
- }
- }
- return head;
- }
- void lookTree(TreeNode *root)
- {
- std::queue<TreeNode *> q;
- q.push(root);
- while (!q.empty())
- {
- TreeNode *head = q.front();
- q.pop();
- std::cout << head->val << " ";
- if (head->left)
- {
- q.push(head->left);
- }
- if (head->right)
- {
- q.push(head->right);
- }
- }
- }
- #endif // LEECODE_C_TREE_H
|