当前位置 : 主页 > 编程语言 > c语言 >

篇一:二叉树-遍历终极版

来源:互联网 收集:自由互联 发布时间:2023-09-03
对于二叉树的遍历,最熟悉的就是递归遍历了,对二叉树的非递归遍历大致知道一些,但是不太熟悉,尤其是后续非递归遍历的实现,一直比较懵逼,于是上网查询了一下,果然大神无


对于二叉树的遍历,最熟悉的就是递归遍历了,对二叉树的非递归遍历大致知道一些,但是不太熟悉,尤其是后续非递归遍历的实现,一直比较懵逼,于是上网查询了一下,果然大神无处不在,那个后序遍历的双栈法,简直让人拍案叫绝,下面总结下。

1、先序遍历

先序遍历即顺序为:根节点->左节点->右节点

递归版:

void xianxu(struct node *root)//先序遍历
{
    struct node *p;
    p = root;
    if(p != NULL)
    {
        printf("%d", root->data);
        xianxu(root->lc);
        xianxu(root->rc);
    }
}

 

2、中序遍历

中序遍历的顺序是:左节点、根节点、右节点

递归版:

void zhongxu(struct node *root)
{
    struct node *p;
    p = root;
    if(p != NULL)
    {
        zhongxu(root->lc);
        printf("%d", root->data);
        zhongxu(root->rc);
    }
}

 

3、后序遍历

后序遍历的顺序是:左节点、右节点、根节点

递归版:

void houxu(struct node *root)
{
    struct node *p;
    p = root;
    if(p != NULL)
    {
        houxu(root->lc);
        houxu(root->rc);
        printf("%d", root->data);
    }
}

 

 

上一篇:篇二:二叉树-创建、重建、
下一篇:没有了
网友评论