void bst<type>::_preorder(np cur, void(*visit)(type data)) { if (cur != NULL) { (*visit)(cur->_data); _preorder(cur->left, visit); _preorder(cur->right, visit); } }
static void _preorder(std::stringstream& ss, Node* node) { if (node == nullptr) return; ss << node->data << "|"; _preorder(ss, node->left); _preorder(ss, node->right); }
void BinaryTree::_preorder(void visit(Website &), BinaryNode* nodePtr) const { // root-left-right if (nodePtr != 0) { Website web = nodePtr->getWebsite(); visit(web); _preorder(visit, nodePtr->getLeftPtr()); _preorder(visit, nodePtr->getRightPtr()); } }
std::string bt<T>::DFTraverse_preorder() const { std::stringstream ss; _preorder(ss, _tree); return std::move(ss.str()); }
void preorder(void(*visit)(type)) { _preorder(_root, visit); };
static u_int64_t _subsum(anode_t *np) { u_int64_t cnt = 0; _preorder(np, _nsum, &cnt); return (cnt); }
void aguri_print(aguri_t *tp) { _preorder(tp->tr_top, _nprint, 0); }
void aguri_reset(aguri_t *tp) { _preorder(tp->tr_top, _nresetcount, 0); tp->tr_count = 0; }
/* * preorder tree walk */ int aguri_walk(aguri_t *tp, aguri_walker func, void *arg) { pair_t p = pair(func, arg); return _preorder(tp->tr_top, _adapter, &p); }