void PreTraverse(Ptr head) { if (!head) return; std::cout << head->value << ' '; PreTraverse(head->left); PreTraverse(head->right); }
/* PreOrderTraverse()调用 */ void PreTraverse(SqBiTree T,int e) { visit(T[e]); if(T[2*e+1]!=Nil) /* 左子树不空 */ PreTraverse(T,2*e+1); if(T[2*e+2]!=Nil) /* 右子树不空 */ PreTraverse(T,2*e+2); }
void PreTraverse(SqBiTree T,int e) { // PreOrderTraverse()调用 VisitFunc(T[e]); if(T[2*e+1]!=Nil) // 左子树不空 PreTraverse(T,2*e+1); if(T[2*e+2]!=Nil) // 右子树不空 PreTraverse(T,2*e+2); }
void PreTraverse(BiTree T) { if(NULL!=T) { printf("%d ",T->data); PreTraverse(T->lchild); PreTraverse(T->rchild); } }
int main(void) { BiTree pTree = NULL; pTree = CreatBiTree(pTree); PreTraverse(pTree); ClearBiTree(&pTree); PreTraverse(pTree); return 0; }
int main(){ Arr<int> ivec{ 3,2,4,1,0,5 }; auto head = getMaxTree(ivec); PreTraverse(head); std::cout << std::endl; InTraverse(head); }
/* 操作结果: 先序遍历T。 */ Status PreOrderTraverse(SqBiTree T) { if(!BiTreeEmpty(T)) /* 树不空 */ PreTraverse(T,0); printf("\n"); return OK; }
void PreOrderTraverse(SqBiTree T,void(*Visit)(TElemType)) { // 初始条件:二叉树存在,Visit是对结点操作的应用函数 // 操作结果:先序遍历T,对每个结点调用函数Visit一次且仅一次 VisitFunc=Visit; if(!BiTreeEmpty(T)) // 树不空 PreTraverse(T,0); cout<<endl; }
int InsertBinarySortTree() { int i = 0; RouteEntry *pstRe = NULL; RouteHead *pstHead = NULL; pstHead = &(gstRouteTable.stHead); pstRe= (RouteEntry *)(gstRouteTable.pstReList); printf("max route num = %d\n", pstHead->dwMaxNum); printf("cur route num = %d\n", pstHead->dwCurNum); BSData *bsdata = malloc(pstHead->dwCurNum * sizeof(BSData)); void **ptr = malloc(pstHead->dwCurNum * sizeof(BSData *)); while(pstRe && i < pstHead->dwCurNum) { bsdata->dwMaxKey = pstRe->dwMaxUnit; bsdata->dwMinKey = pstRe->dwMinUnit; printf("InsertBinarySortTree dwMinKey: %d dwMaxKey : %d\n", bsdata->dwMinKey, bsdata->dwMaxKey); bsdata->data = (void *)&(pstRe->stRouteData); ptr[i] = bsdata; bsdata++; pstRe++; i++; } printf("----------- create binary sort tree -----------\n "); for(i = 0;i < pstHead->dwCurNum;i++) { bsdata = (BSData *)ptr[i]; printf("before create dwMinKey: %d dwMaxKey : %d\n", bsdata->dwMinKey, bsdata->dwMaxKey); } BSCreate(&bsTree, ptr, pstHead->dwCurNum); PreTraverse(bsTree); printf("\n"); printf("----------- create binary sort tree -----------\n "); return 0; }
void TreeAlgorithmRun() { std::vector<int> printVector; printVector = { 50, 25, 75, 12, 37, 63, 87, 6, 18, 31, 42, 58, 69, 81, 93 }; TreeNodeInt *root = nullptr; for (int num : printVector) { TreeNodeInt *node = new TreeNodeInt(num); if (root == nullptr) { root = node; continue; } Insert(root, node); } std::function<void(const TreeNodeInt *node)> func = [](const TreeNodeInt *node){PrintValue(node); }; printf("TraverseAround: "); TraverseAround(root, func); printf("\n"); printf("PreTraverse: "); PreTraverse(root, func); printf("\n"); printf("TraverseDFS: "); TraverseDFS(root, func); printf("\n"); printf("TraverseBFS: "); TraverseBFS(root, func); printf("\n"); }