前面的三个递归比较好做

最后一个层次遍历 用数组模拟一下
设两头,i是结尾,j是开头
j++就是取出元素
i++就是放进去元素
如果i==j那么就是放完了


void InorderTraversal(BinTree BT)
{
    if (!BT)
        return;
    InorderTraversal(BT->Left);
    printf(" %c", BT->Data);
    InorderTraversal(BT->Right);
}
void PreorderTraversal(BinTree BT)
{
    if (!BT)
        return;
    printf(" %c", BT->Data);
    PreorderTraversal(BT->Left);
    PreorderTraversal(BT->Right);
}
void PostorderTraversal(BinTree BT)
{
    if (!BT)
        return;
    PostorderTraversal(BT->Left);
    PostorderTraversal(BT->Right);
    printf(" %c", BT->Data);
}
void LevelorderTraversal(BinTree BT)
{
    if (!BT)
        return;
    //j是左 i是右
    int i, j;
    i = j = 0;
    BinTree q[100];
    q[0] = BT;
    i++;
    while (j < i)
    {
        //取出j个
        BinTree T = q[j++];
        printf(" %c", T->Data);
        //进去i个
        if (T->Left)
            q[i++] = T->Left;
        if (T->Right)
            q[i++] = T->Right;
    }
}
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐