data);preorder(p->lef...">
论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > C语言程序设计教程
Tag:新手,函数,指针,数据类型,对象,Turbo,入门,运算符,数组,结构,二级,,tc,游戏,试题,问答,编译,视频教程

二叉树的几种运算方法

文章类别:C语言程序设计 | 发表日期:2008-9-24 14:45:52

1.二叉树的前序遍历
先访问根结点,再访问左子树,最后访问右子树的次序访问二叉树中所有的结点,且每个结点仅访问一次.
void preorder(btree *p)
{
    if(p!=NULL)
    {   printf("%d",p->data);
        preorder(p->left);
        preorder(p->right);
    }
}

2.二叉树的中序遍历
先访问左子树,再访问根结点,最后访问右子树的次序访问二叉树的所有结点,且每个结点仅访问一次.
void inorder(btree *p)
{
    if(p!=NULL)
    {   inorder(p->left);
        printf("%d",p->data);
        inorder(p->right);
    }
}

3.后序遍历
先访问左子树,再访问右子树,最后访问根结点的次序访问二叉树中所有的结点,且每个结点仅访问一次
void postorder(btree *p)
{
    if(p!=NULL)
    {   postorder(p->left);
        postorder(p->right);
        printf("%d",p->data);
    }
}

4.输出二叉树
首先输出根结点,然后再输出它的左子树和右子树.依次输出的左,右子树要至少有一个不能为空.
void print(btree *b)
{
    if(b!=NULL)
    {   printf("%d",b->data);
        if(b->left!=NULL||b->right!=NULL)
        {   printf("(");
            printf(b->left);
            if(b->right!=NULL)printf(",");
            printf(b->right);
            printf(")");
        }
    }
}

5.求二叉树的深度
若一棵二叉树为空,则其深度为0,否则其深度等于左子树和右子树的最大深度加1,即有如下递归模型:
depth(b)=0                                  /*假如b=NULL*/
depth(b)=max(depth(b->left,b->right)+1      /*其它*/
因此求二叉树深度的递归函数如下:
int depth(btree *b)
{
    int dep1,dep2;
    if(b==NULL)return(0);
    else
    {   dep1=depth(b->left);
        dep2=depth(b->right);
        if(dep1>dep2)return(dep1+1);
        else return(dep2+1);
    }
}

上一篇:{应用}排序算法五例 人气:6711
下一篇:{应用}回朔法一例 人气:5104
视频教程列表
文章教程搜索
 
C语言程序设计推荐教程
C语言程序设计热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058