二叉树の一些常用算法

作者: 忆往 分类: 其他の知识,学习の生涯,数据の结构,树型の结构 发布时间: 2018-06-28 16:19

后序遍历求二叉树的高度递归算法:

int PostTreeDepth(BiTree bt)
{
    if(bt!=NULL)
    {
        int hl,hr,max;
        hl=PostTreeDepth(bt->LChild);
        hr=PostTreeDepth(bt->RChild);
        max=hl>hr?hl:hr; (得到左右子树深度的较大者)
        return (max+1); (返回的深度加上根节点)
    }
    else
    {
        return 0;
    }
}

前序遍历求二叉树的高度递归算法:

// h为bt指向节点的所在层次 初值为1  depth为当前求得的最大层次,全局变量 初始为0
void PostTreeDepth(BiTree bt)
{
    if(bt!=NULL)
    {
        if(h>depth) depth=h;
        PostTreeDepth(bt->LChild,h+1);  //最后加上根节点
        PostTreeDepth(bt->RChild,h+1);
    }
    else
    {
        return 0;
    }
}

逆中序遍历实现横向树状打印:

void PrintTree(TreeNode Boot,int nLayer)
{
    if(Boot==NULL) return;
    PrintTree(Boot->Rchild,nLayer+1);
    for(int i=0;i<nLayer,i++)
    printf("%c\n",Boot->ch);
    PrintTree(Boot->Lchild,nLayer+1);
}

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注