二叉树遍历

来源:互联网 发布:c语言怎么学 编辑:程序博客网 时间:2024/06/06 10:53

        三种遍历方式都要用到递归。先序遍历:先访问根,再访问左子树,再访问右子树。中序遍历:先访问左子树,再访问根,再访问右子树。后序遍历:先访问左子树,再访问右子树,再访问根。

typedef struct BTNode _e
{
         int data;                            //数据域
         BTNode _e  *rchild;       //右子树节点
         BTNode _e  *lchild;       //左子树节点
}BTNode;

BTNode *head;二叉树的根节点指针。

前序遍历函数dpre_Order_Access()

void dpre_Order_Access(BTNode *head)
{
         if(head!=NULL)
         {
                   printf("%d    ",head->data);
                   dpre_Order_Access(head->lchild); /*
递归遍历左子树*/
                   dpre_Order_Access(head->rchild); /*
递归遍历右子树*/
         }
}

中序遍历函数dmid_Order_Access()

void dmid_Order_Access(BTNode *head)
{
         if(head!=NULL)
         {
                   dmid_Order_Access(head->lchild); /*
递归遍历左子树*/
                   printf("%d    ",head->data);
                   dmid_Order_Access(head->rchild); /*
递归遍历右子树*/
         }
}

后序遍历函数dlast_Order_Access()       

void dlast_Order_Access(BTNode *head)
{
         if(head!=NULL)
         {
                   dlast_Order_Access(head->lchild); /*
递归遍历左子树*/
                   dlast_Order_Access(head->rchild); /*
递归遍历右子树*/
                   printf("%d    ",head->data);
         }
}