6.50√ 由输入的三元组序列建立二叉树的二叉链表

搞了好久终于编译成功了!!!
在这里最大的问题是字符的输入输出问题,记录一下!!

  • 关于单个字符的输入问题:
    一开始用了scanf ,搞不明白然后就网上查了一下,改用了 getchar()。getchar()使用的时候要注意输入完毕后敲回车显示结果的时候【回车键也是会被读入的!!】所以这里经过建议,选择了多加一个getchar()在最后用作接收回车键

  • 单个字符输入时使用的控制符时 “%c”;字符串的是"%s"

#include <stdio.h>
#include <malloc.h>
#include <string.h>

typedef struct BTNode
{
    char data;
    struct BTNode *left, *right;
}BTNode;


BTNode *creat_tree2()
{
    BTNode *tree = NULL;
    char a;
    char b;
    char c;
    int i = 1;
    printf("请输入第%d组三元组序列", i);
    a=getchar();
    printf("a=%c\n", a);
    b=getchar();
    printf("b=%c\n", b);
    c=getchar();
    printf("c=%c\n", c);
    getchar();
   
    if(a == '^')
    {
        tree = (BTNode *)malloc(sizeof(BTNode));
        tree->data = b;
        tree->left = NULL;
        tree->right = NULL;
        
        BTNode *p;
        BTNode *qu[100];
        int front = -1, rear = -1;
        qu[++rear] = tree;
        
        i++;
        printf("请输入第%d组三元组序列", i);
        a=getchar();
        b=getchar();
        c=getchar();
        getchar();

        while (front != rear && a != '^' && b != '^')
        {
            p = qu[++front];
            while (a == p->data)
            {
                if (c == 'L')
                {
                    p->left = (BTNode *)malloc(sizeof(BTNode));
                    p->left->data = b;
                    p->left->left = NULL;
                    p->left->right = NULL;
                    qu[++rear] = p->left;
                }
                else if(c == 'R')
                {
                    p->right = (BTNode *)malloc(sizeof(BTNode));
                    p->right->data = b;
                    p->right->left = NULL;
                    p->right->right = NULL;
                    qu[++rear] = p->right;
                }
            i++;
            printf("请输入第%d组三元组序列", i);
            a=getchar();
            b=getchar();
            c=getchar();
            getchar();

            }
            
        }
    }
	return tree;    
}

char print(BTNode *bt)
{
    if (bt!=NULL)
    {
        printf ("%c", bt->data);
        print(bt->left);
        print(bt->right);
    }
}

int main()
{
    BTNode *tree = creat_tree2();
    print(tree);
    
    return 0;
}
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值