标题:字符串二叉排序树的构造问题
只看楼主
老阎
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-12-7
结帖率:100%
已结贴  问题点数:20 回复次数:5 
字符串二叉排序树的构造问题
刚学会数据结构中数字的二叉排序树构造,但是不知道字符串的该怎么构造,比如输入一串英语单词然后以各单词为结点形成二叉排序树,烦请各位高手指教,最好能给几行简单的代码,谢谢大家!
搜索更多相关主题的帖子: 构造 字符 
2010-12-17 19:15
小小哥
Rank: 4
等 级:业余侠客
帖 子:139
专家分:224
注 册:2010-11-28
得分:10 
程序代码:
template<class T>
class BST;
template<class T>
class BSTnode
{
    friend class BST<T>;
private:
    T info;
    BSTnode<T> *LeftChild;//左子树
    BSTnode<T> *RightChild;//右子树
public:
    BSTnode()
    {
        LeftChild=RightChild=NULL;
    }
    BSTnode(const T &ele)
    {
        info=ele;
        LeftChild=RightChild=0;
    }
    BSTnode(const T &ele,BSTnode<T>*l,BSTnode<T>*r)
    {
        info=ele;
        LeftChild=l;
        RightChild=r;
    }
};
节点类的定义
2010-12-17 21:58
老阎
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-12-7
得分:0 
回复 2楼 小小哥
哥能不能用简单C指导一下啊,呵呵
2010-12-17 22:14
小小哥
Rank: 4
等 级:业余侠客
帖 子:139
专家分:224
注 册:2010-11-28
得分:0 
回复 3楼 老阎
c我就不会了……不好意思
2010-12-18 13:12
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
得分:10 
#include <stdio.h>
#include <malloc.h>
#include <string.h>

#define MAX_LEN    10

struct BST
{
    char data[MAX_LEN];
    struct BST *lch, *rch;
};

void insert( struct BST **tree, char temp[MAX_LEN] )
{
    struct BST *p = *tree;

    if( p == NULL )
    {
        *tree = (struct BST *) malloc (sizeof(struct BST));
        strcpy( (*tree)->data, temp );
        (*tree)->rch = (*tree)->lch = NULL;
        return;
    }
    while( 1 )
    {
        if( strcmp( p->data, temp ) > 0 )
        {
            if( p->lch == NULL )
            {
                p->lch = (struct BST *) malloc (sizeof(struct BST));
                strcpy( p->lch->data, temp );
                p->lch->lch = p->lch->rch = NULL;
                return;
            }
            else
            {
                p = p->lch;
            }
        }
        else
        {
            if( p->rch == NULL )
            {
                p->rch = (struct BST *) malloc (sizeof(struct BST));
                strcpy( p->rch->data, temp );
                p->rch->lch = p->rch->rch = NULL;
                return;
            }
            else
            {
                p = p->rch;
            }
        }
    }
}

void print( struct BST *tree )
{
    if( tree )
    {
        printf("%s ", tree->data );
        print( tree->lch);
        print( tree->rch);
    }

    return;
}


int main(void)
{
    struct BST *tree = NULL;
    char temp[MAX_LEN];

    while( scanf("%s", temp) )
    {
        insert(&tree, temp);
    }
    print(tree);
    printf("\n");

    return 0;
}
2010-12-19 08:46
老阎
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-12-7
得分:0 
回复 5楼 寒风中的细雨
xiexie a
2010-12-19 12:47



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-329225-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.343090 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved