前序遍历

逻辑

前序遍历又称深度优先遍历。
中左右
输出abdhiejcfg,先打印左孩子,打到底后再平层打印右孩子。

实现

先打印中即树根,因遍历是以最左开始,最右结束,所以可以通过递归的思想进行调用:

void PreOrder(TreeP tree){
    if(tree!=NULL){
    printf("%c",tree->data);
    PreOrder(tree->Lchild);
    PreOrder(tree->Rchild);
    }
}

abdhiejcfg

中序遍历

逻辑

左中右(踩扁了)
hdibjeafcg

实现

先左到底再开始左中右

void InOrder(TreeP tree){
    if(tree!=NULL){
        InOrder(tree->Lchild);
        printf("%c",tree->data);
        InOrder(tree->Rchild);
    }
}

后序遍历

逻辑

前后中
hidjebfgca

实现

先左到底,再右到中:

void PostOrder(TreeP tree){
    if(tree!=NULL){
        PostOrder(tree->Lchild);
        PostOrder(tree->Rchild);
        printf("%c",tree->data);
    }
}

hidjebfgca

运行结果