Example #1
0
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);
}
Example #3
0
 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);
 }
Example #4
0
void PreTraverse(BiTree T)
{
	if(NULL!=T)
	{
		printf("%d ",T->data);
		PreTraverse(T->lchild);
		PreTraverse(T->rchild);
	}
}
Example #5
0
int main(void)
{
	BiTree pTree = NULL;
	pTree = CreatBiTree(pTree);
	PreTraverse(pTree);
	
	ClearBiTree(&pTree);
	PreTraverse(pTree);
	return 0;
}
Example #6
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;
}
Example #8
0
 void PreOrderTraverse(SqBiTree T,void(*Visit)(TElemType))
 { // 初始条件:二叉树存在,Visit是对结点操作的应用函数
   // 操作结果:先序遍历T,对每个结点调用函数Visit一次且仅一次
   VisitFunc=Visit;
   if(!BiTreeEmpty(T)) // 树不空
     PreTraverse(T,0);
   cout<<endl;
 }
Example #9
0
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;
}
Example #10
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");
}