博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二叉树
阅读量:6884 次
发布时间:2019-06-27

本文共 3560 字,大约阅读时间需要 11 分钟。

二叉树基本操作代码

#include "stdafx.h"#include "stdlib.h"#include "string.h"#define MAX 100typedef char Elemtype;typedef struct BTNODE{    Elemtype data;    BTNODE *left;    BTNODE *right;} BTNode;void CreateBTNode(BTNode *&root, char *str){    BTNode *p = NULL;    BTNode *st[MAX] = {NULL};    int top = -1;    int i = 0;    int k = 0;    char ch = str[i];    while ('\0' != ch)    {        switch (ch)        {        case '(':            {                top++;                st[top] = p;                k = 1;                break;            }        case ')':            {                top--;                break;            }        case ',':            {                k = 2;                break;            }        default:            {                p = (BTNode*)malloc(sizeof(BTNode));                if (NULL == p)                {                    return;                }                p->data = ch;                p->left = p->right = NULL;                if (!root)                {                    root = p;                }                 else                {                    switch (k)                    {                    case 1:                        st[top]->left = p;                        break;                    case 2:                        st[top]->right = p;                        break;                    }                }                break;            }        }        ch = str[++i];    }}void DispBTNode(BTNode *&root){    if (root)    {        printf("%c", root->data);        if (root->left || root->right)        {            printf("(");            DispBTNode(root->left);            if (root->right)            {                printf(",");                DispBTNode(root->right);            }            printf(")");        }    }}int GetBTNodeDepth(BTNode *&root){    int iLeftDepth  = 0;    int iRightDepth = 0;    if (!root)    {        return 0;    }    iLeftDepth  = GetBTNodeDepth(root->left);    iRightDepth = GetBTNodeDepth(root->right);    return (iLeftDepth > iRightDepth ? (iLeftDepth+1):(iRightDepth+1));}void PreOrder(BTNode *&root){    if (root)    {        printf("%c\t", root->data);        PreOrder(root->left);        PreOrder(root->right);    }}void PreOrder1(BTNode *&root){    int top = -1;    BTNode *p = NULL;    BTNode *st[MAX] = {NULL};    if (root)    {        top++;        st[top] = root;        while (top > -1)        {            p = st[top];            top--;            printf("%c\t", p->data);            if (p->right)            {                top++;                st[top] = p->right;            }            if (p->left)            {                top++;                st[top] = p->left;            }        }    }}void InOrder(BTNode *&root){    if (root)    {                PreOrder(root->left);        printf("%c\t", root->data);        PreOrder(root->right);    }}void PostOrder(BTNode *&root){    if (root)    {                PreOrder(root->left);                PreOrder(root->right);        printf("%c\t", root->data);    }}int _tmain(int argc, _TCHAR* argv[]){    BTNode *root = NULL;    char *str = "A(B(D(,G)),C(E,F))";    CreateBTNode(root, str);    DispBTNode(root);    printf("\r\n");    printf("The BTree's Depth = %d\r\n", GetBTNodeDepth(root));    printf("PreOrder:\r\n");    PreOrder(root);    printf("\r\n");    printf("InOrder:\r\n");    InOrder(root);    printf("\r\n");    printf("PostOrder:\r\n");    PostOrder(root);    printf("\r\n");    return 0;}

 本文转自静默虚空博客园博客,原文链接:http://www.cnblogs.com/jingmoxukong/p/3789529.html,如需转载请自行联系原作者

你可能感兴趣的文章
20145209 《信息安全系统设计基础》第3周学习总结
查看>>
python 进程
查看>>
Grunt插件uglify
查看>>
export 与 export default
查看>>
linux配置网卡
查看>>
正则表达式语法
查看>>
013、Dockerfile构建镜像(2019-01-02 周三)
查看>>
Office Word 2013发布带数学公式的博客
查看>>
c# mvc如何获取xml文件
查看>>
mongodb Java(八)
查看>>
JavaScript随机数
查看>>
ASP.NET验证控件——RequiredFieldValidator
查看>>
strstr
查看>>
MySQL 条件 select case 的实现(解决 零 做分母的问题 )
查看>>
openNebula rgister img instance vms error collections
查看>>
error Infos
查看>>
PL/sql配置相关
查看>>
接着浅析table-cell的简单应用
查看>>
Project 10:简单图像的绘制
查看>>
(第五条)避免创建不必要的对象
查看>>