1. 程式人生 > 實用技巧 >二叉樹的先序建立&遞迴先序遍歷

二叉樹的先序建立&遞迴先序遍歷

#include <stdio.h>
#include <stdlib.h>
typedef char Elemtype;
typedef struct BiTNode
{
Elemtype data;
struct BiTNode * lchild,*rchild;

}BiTNode,*BiTree;
//先序遞迴來輸入,建立二叉樹
void Creat_BiTree(BiTree *T)//二級指標可以保證回傳的根節點不變,同時二級指標可以改變一級指標
{
    char ch;
    scanf("%c",&ch);//注意scanf規範
    if(ch==' ')
    (*T)=NULL;
    else
    {
        (*T)=malloc(sizeof(BiTNode));//第一次實際改變PT一級指標
        (*T)->data=ch;
        Creat_BiTree(&(*T)->lchild);
        Creat_BiTree(&(*T)->rchild);
    }

}
//訪問操作
void visit(char ch,int level)
{
    printf("%c 位於第 %d 層\n",ch,level);

}

void PreOrderTraverse(BiTree T ,int level)
{
    if(T)
    {
    visit(T->data,level);
    PreOrderTraverse(T->lchild,level+1);
    PreOrderTraverse(T->rchild,level+1);
    }
}
int main()
{
    int level=1;
    BiTree PT=NULL;
    Creat_BiTree(&PT);
    PreOrderTraverse(PT,level);//
    return 0;

}

情景:建立二叉樹,填充字母,並顯示對應的層數。
C語言中引用二級指標可以很好地修改一級指標。