二叉树的遍历和总结--C和C++

来源:互联网 发布:诚龙网络克隆教程 编辑:程序博客网 时间:2024/06/01 10:42

1.二叉树的建立以及前、中、后序遍历

struct BiTNode{    int data;    BiTNode *lchild, *rchild;};//创建二叉树BiTNode *CreatTree(){    int date;    BiTNode *T;    scanf("%d", &date);    if (date == 0)        return NULL;    else    {        T = (BiTNode*)malloc(sizeof(BiTNode));        T->data = date;        T->lchild = CreatTree();        T->rchild = CreatTree();    }    return T;}//前序遍历void PreOrderTraversing(BiTNode *T){    if (T)    {        printf("%d ", T->data);        PreOrderTraversing(T->lchild);        PreOrderTraversing(T->rchild);    }}//中序遍历void MidOrderTraversing(BiTNode *T){    if (T)    {        MidOrderTraversing(T->lchild);        printf("%d ", T->data);        MidOrderTraversing(T->rchild);    }}//后续遍历void LastOrderTraversing(BiTNode *T){    if (T)    {        LastOrderTraversing(T->lchild);        LastOrderTraversing(T->rchild);        printf("%d ", T->data);    }}

代码解析:
前序遍历:若二叉树为空,则空操作返回,否则先访问根节点,然后前序遍历左子树再前序遍历右子树。ABCDEGF
中序遍历:若二叉树为空,则空操作返回,否则从根节点开始(并不是先访问根节点),中序遍历根节点的左子树,然后访问根节点,最后中序遍历右子树。CBEGDFA
后续遍历:若二叉树为空,则空操作返回,否则从左到右先叶子后节点的方式访问左右子树,最后访问根节点。CGEFDBA

一棵常见的二叉树

0 0
原创粉丝点击