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

本文共 3533 字,大约阅读时间需要 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;}

 

转载于:https://www.cnblogs.com/jingmoxukong/p/3789529.html

你可能感兴趣的文章
中间件
查看>>
Android SharedPreferences
查看>>
css面试题
查看>>
Vue组建通信
查看>>
用CSS画一个带阴影的三角形
查看>>
前端Vue:函数式组件
查看>>
程鑫峰:1.26特朗.普力挺美元力挽狂澜,伦敦金行情分析
查看>>
safari下video标签无法播放视频的问题
查看>>
01 iOS中UISearchBar 如何更改背景颜色,如何去掉两条黑线
查看>>
对象的继承及对象相关内容探究
查看>>
Spring: IOC容器的实现
查看>>
Serverless五大优势,成本和规模不是最重要的,这点才是
查看>>
Nginx 极简入门教程!
查看>>
iOS BLE 开发小记[4] 如何实现 CoreBluetooth 后台运行模式
查看>>
Item 23 不要在代码中使用新的原生态类型(raw type)
查看>>
为网页添加留言功能
查看>>
JavaScript—数组(17)
查看>>
Android 密钥保护和 C/S 网络传输安全理论指南
查看>>
以太坊ERC20代币合约优化版
查看>>
Why I Began
查看>>