/** * @brief The root and two children: \f$ \begin{array}{ccc} & R & \\ \diagup & & \diagdown \\ A & & B \end{array} \f$ Expected output: RAABBR */ void traverse_simple_tree() { Node::SPtr root = clearScene(); root->setName("R"); root->createChild("A"); root->createChild("B"); traverse_test( root, "RAABBR", "RAABBR", "RAABBR", "RAB" ); }
/** * @brief Diamond-shaped graph: \f$ \begin{array}{ccc} & R & \\ \diagup & & \diagdown \\ A & & B \\ \diagdown & & \diagup \\ & C \end{array} \f$ Expected output: RABCCBAR */ void traverse_simple_diamond() { Node::SPtr root = clearScene(); root->setName("R"); Node::SPtr A = root->createChild("A"); Node::SPtr B = root->createChild("B"); Node::SPtr C = A->createChild("C"); B->addChild(C); traverse_test( root, "RACCABBR", "RACCABCCBR", "RACCABCCBR", "RABC" ); }
/** * @brief More complex graph: R__ / \ | A B | \ / | C / \ / D | E Expected output: RABCDEEDCBAR */ void traverse_complex() { Node::SPtr root = clearScene(); root->setName("R"); Node::SPtr A = root->createChild("A"); Node::SPtr B = root->createChild("B"); Node::SPtr C = A->createChild("C"); B->addChild(C); Node::SPtr D = C->createChild("D"); root->addChild(D); Node::SPtr E = D->createChild("E"); traverse_test( root, "RACDEEDCABBR", "RACDEEDCABCDEEDCBDEEDR", "RACDEEDCABCCBDDR", "RABCDE" ); }
/** * @brief Even more complex graph: R__ / \ | A B C \/ \| D E | | F G Expected output: RABCDEEDCBAR */ void traverse_morecomplex() { Node::SPtr root = clearScene(); root->setName("R"); Node::SPtr A = root->createChild("A"); Node::SPtr B = root->createChild("B"); Node::SPtr C = root->createChild("C"); Node::SPtr D = A->createChild("D"); B->addChild(D); Node::SPtr E = B->createChild("E"); C->addChild(E); Node::SPtr F = D->createChild("F"); Node::SPtr G = E->createChild("G"); traverse_test( root, "RADFFDABEGGEBCCR", "RADFFDABDFFDEGGEBCEGGECR", "RADFFDABDDEGGEBCEECR", "RABDFCEG" ); }
/** * @brief another complex case R______ / \ \ \ \ A B C D E \/__/_/_/ F |\ G | |/ H */ void traverse_morecomplex2() { Node::SPtr root = clearScene(); root->setName("R"); Node::SPtr A = root->createChild("A"); Node::SPtr B = root->createChild("B"); Node::SPtr C = root->createChild("C"); Node::SPtr D = root->createChild("D"); Node::SPtr E = root->createChild("E"); Node::SPtr F = A->createChild("F"); B->addChild(F); C->addChild(F); D->addChild(F); E->addChild(F); Node::SPtr G = F->createChild("G"); Node::SPtr H = G->createChild("H"); F->addChild(H); traverse_test( root, "RAFGHHGFABBCCDDEER", "RAFGHHGHHFABFGHHGHHFBCFGHHGHHFCDFGHHGHHFDEFGHHGHHFER", "RAFGHHGHHFABFFBCFFCDFFDEFFER", "RABCDEFGH" ); }