7-4 Pseudo-completeness
更多...
|
Node * | genTree (const vector< int > &preorder, const vector< int > &inorder, int pStart, int pEnd, int iStart, int iEnd) |
|
int | judge (Node *node) |
|
int | main (istream &cin, ostream &cout) |
|
void | postOrder (Node *node, vector< int > &vec) |
|
| TEST (a7_4, case1) |
|
| TEST (a7_4, case2) |
|
| TEST (a7_4, case3) |
|
| TEST (a7_4, case4) |
|
◆ genTree()
Node * pat::a::a7_4::genTree |
( |
const vector< int > & |
preorder, |
|
|
const vector< int > & |
inorder, |
|
|
int |
pStart, |
|
|
int |
pEnd, |
|
|
int |
iStart, |
|
|
int |
iEnd |
|
) |
| |
在文件 pat.cpp 第 5213 行定义.
5215 if(pStart > pEnd || iStart > iEnd) {
5218 const int root = preorder[pStart];
5219 auto *node =
new Node(
root);
5220 unordered_set<int> lefts;
5221 int iLeftEnd = iStart;
5222 while(inorder[iLeftEnd] !=
root) {
5223 lefts.insert(inorder[iLeftEnd++]);
5226 const int iRightStart = iLeftEnd + 2;
5227 int pLeftEnd = pStart + 1;
5228 while(pLeftEnd < preorder.size() && lefts.contains(preorder[pLeftEnd])) {
5231 node->left =
genTree(preorder, inorder, pStart + 1, pLeftEnd - 1, iStart, iLeftEnd);
5232 node->right =
genTree(preorder, inorder, pLeftEnd, pEnd, iRightStart, iEnd);
Node * genTree(const vector< int > &preorder, const vector< int > &inorder, int pStart, int pEnd, int iStart, int iEnd)
引用了 genTree() , 以及 acwing::acwing836_408::root.
被这些函数引用 genTree() , 以及 main().
◆ judge()
int pat::a::a7_4::judge |
( |
Node * |
node | ) |
|
在文件 pat.cpp 第 5246 行定义.
5248 vector<vector<Node *>> lvs;
5249 queue<pair<int, Node *>> q;
5252 const auto p = q.front();
5254 const int level = p.first;
5256 while(lvs.size() < level + 1) {
5257 vector<Node *> topush;
5258 lvs.push_back(topush);
5261 lvs[level].push_back(n);
5262 if(n->left !=
nullptr) {
5263 q.push({level + 1, n->left});
5265 if(n->right !=
nullptr) {
5266 q.push({level + 1, n->right});
5269 for(
const auto kv: m) {
5270 const int k = kv.first;
5271 const int v = kv.second;
5272 if(k != m.rbegin()->first) {
5273 if(v != pow(2, k)) {
5277 if(v == pow(2, k)) {
5280 if(lvs.size() >= 2) {
5281 bool haveEmpty =
false;
5282 for(
const auto &nd: lvs[lvs.size() - 2]) {
5283 if(nd->left ==
nullptr) {
5290 if(nd->right ==
nullptr) {
引用了 pat::a::a7_4::Node::left , 以及 pat::a::a7_4::Node::right.
被这些函数引用 main().
◆ main()
int pat::a::a7_4::main |
( |
istream & |
cin, |
|
|
ostream & |
cout |
|
) |
| |
在文件 pat.cpp 第 5305 行定义.
5308 vector<int> inorder(n);
5309 vector<int> preorder(n);
5310 for(
int i = 0; i < n; i++) {
5313 for(
int i = 0; i < n; i++) {
5316 Node *
root =
genTree(preorder, inorder, 0, n - 1, 0, n - 1);
5320 for(
int i = 0; i <
vec.size(); i++) {
5322 if(i !=
vec.size() - 1) {
void postOrder(Node *node, vector< int > &vec)
引用了 genTree(), judge(), postOrder(), acwing::acwing836_408::root , 以及 pat::a::a7_2::vec.
被这些函数引用 TEST().
◆ postOrder()
void pat::a::a7_4::postOrder |
( |
Node * |
node, |
|
|
vector< int > & |
vec |
|
) |
| |
◆ TEST() [1/4]
pat::a::a7_4::TEST |
( |
a7_4 |
, |
|
|
case1 |
|
|
) |
| |
在文件 pat_test.cpp 第 2356 行定义.
2357 istringstream in(
"7\n"
2360 auto out = ostringstream();
int main(int argc, char **argv)
引用了 main().
◆ TEST() [2/4]
pat::a::a7_4::TEST |
( |
a7_4 |
, |
|
|
case2 |
|
|
) |
| |
在文件 pat_test.cpp 第 2367 行定义.
2368 istringstream in(
"10\n"
2369 "8 4 9 2 10 5 1 6 3 7\n"
2370 "1 2 4 8 9 5 10 3 6 7");
2371 auto out = ostringstream();
2374 "8 9 4 10 5 2 6 7 3 1",
引用了 main().
◆ TEST() [3/4]
pat::a::a7_4::TEST |
( |
a7_4 |
, |
|
|
case3 |
|
|
) |
| |
在文件 pat_test.cpp 第 2378 行定义.
2379 istringstream in(
"10\n"
2380 "8 4 2 5 11 1 6 3 14 7\n"
2381 "1 2 4 8 5 11 3 6 7 14");
2382 auto out = ostringstream();
2385 "8 4 11 5 2 6 14 7 3 1",
引用了 main().
◆ TEST() [4/4]
pat::a::a7_4::TEST |
( |
a7_4 |
, |
|
|
case4 |
|
|
) |
| |