数据结构学习日志之十一--遍历二叉树

二叉树由3个基本单元组成:根结点,左子树和右子树。因此,若能依次遍历这三部分,便是遍历了整个二叉树。假如以L、D、R分别表示遍历左子树、访问根结点和遍历右子树,则可有DLR、LDR、LRD、DRL、RDL、RLD这6种方案。若限定先左后右,则只有前3种情况,分别称之为先(根)序遍历、中(根)序遍历和后(根)序遍历。

首先我们来建立一个二叉树,采取的是链式存储结构

typedef struct BiTNode{
    char data;
    struct BiTNode *lchild,*rchild;
}BiTNode, *BiTree;

void CreteBiTree(BiTree *T)
{
    char c;
    scanf("%c",&c);
    if (' ' == c) {
        *T = NULL;
    }else{
        *T = (BiTNode *)malloc(sizeof(BiTNode));
        (*T)->data = c;
        CreteBiTree(&(*T)->lchild);
        CreteBiTree(&(*T)->rchild);
    }
}

默认是以先序遍历的方式插入结点,空格为结束标志

//遍历二叉树
//____前序遍历
void PreOrderTraverse(BiTree T, int level)
{
    if (T != NULL) {
        visit(T->data,level);
        PreOrderTraverse(T->lchild, level+1);
        PreOrderTraverse(T->rchild, level+1);
    }
}
代码地址:https://github.com/chanbendong/DataStructure/blob/master/BiTree.c


猜你喜欢

转载自blog.csdn.net/chanbendong/article/details/80066976