linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘网络学院网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > 开发语言 > c/c++/c# >
栏目导栏
  php
  JSP
  ASP
  asp.net
  JAVA
  c/c++/c#
  perl
  JavaScript
  Basic
  Delphi
资料搜索
热门文章
·Windows/Linux下配置Eclipse+C
·c语言static与extern的用法
·VC++(Ctime日期函数)应用
·typedef struct和struct的区别
·C/C++对文件操作
·C常用算法程序实例-线性代数方
·C#发送Email邮件方法总结
·struct的初始化,拷贝及指针成
·C语言入门实例 switch使用
·c++二叉树实现源代码
·对初学者的建议:如何学习C语言
·C++ Builder 处理控件中的文本
·常用的BCB & Delphi 函数
·C++入门经典教程完全版01-引言
·C++ Builder 使用Canvas对象的
最新文章
·使用C/C++扩展Python
·C语言入门实例 switch使用
·在C#里实现DATAGRID的打印预览
·如何使用 Visual C# .NET 创建
·C#发送Email邮件方法总结
·一道C#面试题目引发的思考
·c语言艺术清屏
·c语言static与extern的用法
·大数的阶乘算法
·C#编码好习惯
·构造函数,复制构造函数
·typedef struct和struct的区别
·struct的初始化,拷贝及指针成
·超强的指针学习笔记推荐
·STL中erase方法对链表类容器的
Google
 
c++二叉树实现源代码
[ 作者:  加入时间:2007-10-23 14:49:15  来自:Linux联盟收集整理 ]
二叉树实现源代码如下:f69Linux联盟
f69Linux联盟
#include <conio.h>f69Linux联盟
#include <stdio.h>f69Linux联盟
#include <stdlib.h>f69Linux联盟
f69Linux联盟
#define OK 1f69Linux联盟
#define ERROR 0f69Linux联盟
#define TRUE 1f69Linux联盟
#define FALSE 0f69Linux联盟
#define OVERFLOW -2f69Linux联盟
typedef int status;f69Linux联盟
f69Linux联盟
typedef struct BiNodef69Linux联盟
{f69Linux联盟
    char Data;f69Linux联盟
    struct BiNode* lChild;f69Linux联盟
    struct BiNode* rChild;f69Linux联盟
}BiNode,*pBiNode;f69Linux联盟
f69Linux联盟
status CreateTree(BiNode** pTree);f69Linux联盟
status PreOrderTraval(BiNode* pTree);f69Linux联盟
status Visit(char Data);f69Linux联盟
status Display(BiNode* pTree,int Level);f69Linux联盟
status Clear(BiNode* pTree);f69Linux联盟
f69Linux联盟
BiNode *pRoot=NULL;f69Linux联盟
f69Linux联盟
main()f69Linux联盟
{f69Linux联盟
    clrscr();f69Linux联盟
    CreateTree(&pRoot);f69Linux联盟
f69Linux联盟
    printf("\nPreOrder:");f69Linux联盟
    PreOrderTraval(pRoot);f69Linux联盟
    printf("\n");f69Linux联盟
f69Linux联盟
    printf("\nInOrder:");f69Linux联盟
    InOrderTraval(pRoot);f69Linux联盟
    printf("\n");f69Linux联盟
f69Linux联盟
    printf("\nPostOrder:");f69Linux联盟
    PostOrderTraval(pRoot);f69Linux联盟
    printf("\n");f69Linux联盟
f69Linux联盟
    printf("\nShowLeaves:");f69Linux联盟
    ShowLeaves(pRoot);f69Linux联盟
    printf("\n-----------------------\n");f69Linux联盟
    printf("\n");f69Linux联盟
f69Linux联盟
    Display(pRoot,0);f69Linux联盟
f69Linux联盟
    printf("\n");f69Linux联盟
    printf("\nDeleting Tree:\n");f69Linux联盟
    DelTree(pRoot);f69Linux联盟
    printf("BiTree Deleted.");f69Linux联盟
f69Linux联盟
    getch();f69Linux联盟
}f69Linux联盟
status CreateTree(BiNode** pTree) /*Input Example: abd##e##cf##g##*/f69Linux联盟
{f69Linux联盟
    char ch;f69Linux联盟
    scanf("%c",&ch);f69Linux联盟
    if(ch==‘#‘)f69Linux联盟
    {f69Linux联盟
        (*pTree)=NULL;f69Linux联盟
    }f69Linux联盟
    elsef69Linux联盟
    {f69Linux联盟
        if(!((*pTree)=(BiNode*)malloc(sizeof(BiNode))))f69Linux联盟
        {f69Linux联盟
            exit(OVERFLOW);f69Linux联盟
        }f69Linux联盟
        (*pTree)->Data=ch;f69Linux联盟
        CreateTree(&((*pTree)->lChild));f69Linux联盟
        CreateTree(&((*pTree)->rChild));f69Linux联盟
    }f69Linux联盟
return OK;f69Linux联盟
}f69Linux联盟
status PreOrderTraval(BiNode* pTree)f69Linux联盟
{f69Linux联盟
    if(pTree)f69Linux联盟
    {f69Linux联盟
        if(Visit(pTree->Data))f69Linux联盟
        {f69Linux联盟
            if(PreOrderTraval(pTree->lChild))f69Linux联盟
            {f69Linux联盟
                if(PreOrderTraval(pTree->rChild))f69Linux联盟
                {f69Linux联盟
                    return OK;f69Linux联盟
                }f69Linux联盟
            }f69Linux联盟
        }f69Linux联盟
        return ERROR;f69Linux联盟
    }f69Linux联盟
    elsef69Linux联盟
    {f69Linux联盟
        return OK;f69Linux联盟
    }f69Linux联盟
}f69Linux联盟
status InOrderTraval(BiNode* pTree)f69Linux联盟
{f69Linux联盟
    if(pTree)f69Linux联盟
    {f69Linux联盟
        if(InOrderTraval(pTree->lChild))f69Linux联盟
        {f69Linux联盟
            if(Visit(pTree->Data))f69Linux联盟
            {f69Linux联盟
                if(InOrderTraval(pTree->rChild))f69Linux联盟
                {f69Linux联盟
                    return OK;f69Linux联盟
                }f69Linux联盟
            }f69Linux联盟
            return ERROR;f69Linux联盟
        }f69Linux联盟
        return ERROR;f69Linux联盟
    }f69Linux联盟
    elsef69Linux联盟
    {f69Linux联盟
        return OK;f69Linux联盟
    }f69Linux联盟
}f69Linux联盟
status PostOrderTraval(BiNode* pTree)f69Linux联盟
{f69Linux联盟
    if(pTree)f69Linux联盟
    {f69Linux联盟
        if(PostOrderTraval(pTree->lChild))f69Linux联盟
        {f69Linux联盟
            if(PostOrderTraval(pTree->rChild))f69Linux联盟
            {f69Linux联盟
                if(Visit(pTree->Data))f69Linux联盟
                {f69Linux联盟
                    return OK;f69Linux联盟
                }f69Linux联盟
                return ERROR;f69Linux联盟
            }f69Linux联盟
        }f69Linux联盟
        return ERROR;f69Linux联盟
    }f69Linux联盟
    elsef69Linux联盟
    {f69Linux联盟
        return OK;f69Linux联盟
    }f69Linux联盟
}f69Linux联盟
status Visit(char Data)f69Linux联盟
{f69Linux联盟
    printf("%c",Data);f69Linux联盟
    return OK;f69Linux联盟
}f69Linux联盟
status Display(BiNode* pTree,int Level)f69Linux联盟
{f69Linux联盟
    int i;f69Linux联盟
    if(pTree==NULL) return;f69Linux联盟
    Display(pTree->lChild,Level+1);f69Linux联盟
    for(i=0;i<Level-1;i++)f69Linux联盟
    {f69Linux联盟
        printf(" ");f69Linux联盟
    }f69Linux联盟
    if(Level>=1)f69Linux联盟
    {f69Linux联盟
        printf("--");f69Linux联盟
    }f69Linux联盟
    printf("%c\n",pTree->Data);f69Linux联盟
    Display(pTree->rChild,Level+1);f69Linux联盟
}f69Linux联盟
status ShowLeaves(BiNode* pTree)f69Linux联盟
{f69Linux联盟
    if(pTree)f69Linux联盟
    {f69Linux联盟
        if(ShowLeaves(pTree->lChild))f69Linux联盟
        {f69Linux联盟
            if(ShowLeaves(pTree->rChild))f69Linux联盟
            {f69Linux联盟
                if((pTree->lChild==NULL)&&(pTree->rChild==NULL))f69Linux联盟
                {f69Linux联盟
                    if(!Visit(pTree->Data))f69Linux联盟
                    {f69Linux联盟
                        return ERROR;f69Linux联盟
                    }f69Linux联盟
                } f69Linux联盟
                return OK;f69Linux联盟
            }f69Linux联盟
        }f69Linux联盟
        return ERROR;f69Linux联盟
    }f69Linux联盟
    elsef69Linux联盟
    {f69Linux联盟
        return OK;f69Linux联盟
    }f69Linux联盟
}f69Linux联盟
status DelTree(BiNode* pTree)f69Linux联盟
{f69Linux联盟
    if(pTree)f69Linux联盟
    {f69Linux联盟
        if(DelTree(pTree->lChild))f69Linux联盟
        {f69Linux联盟
            if(DelTree(pTree->rChild))f69Linux联盟
            {f69Linux联盟
                printf("Deleting %c\n",pTree->Data);f69Linux联盟
                free((void*)pTree);f69Linux联盟
                return OK;f69Linux联盟
            }f69Linux联盟
        }f69Linux联盟
        return ERROR;f69Linux联盟
    }f69Linux联盟
    elsef69Linux联盟
    {f69Linux联盟
        return OK;f69Linux联盟
    }f69Linux联盟
Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·VC++(Ctime日期函数)应用  (2007-10-30 13:45:07)
 ·限制文本字节数的JS源代码程序  (2007-10-29 13:47:48)
 ·利用Visual C++/MFC开发Windows程序的优势  (2007-10-26 11:05:28)
 ·C++辨析系列谈  (2007-10-23 14:57:07)
 ·浅谈C++函数的参数  (2007-10-23 14:52:37)
 ·c++霍夫曼树编码的实现  (2007-10-23 14:50:51)
 ·c++为各种主机环境编程  (2007-10-23 14:47:49)
 ·C++运算符重载赋值运算符  (2007-10-23 14:45:17)
 ·C++运算符重载转换运算符  (2007-10-23 14:42:47)
 ·对C++递增(增量)运算符重载的思考  (2007-10-23 14:42:08)