zoukankan      html  css  js  c++  java
  • 创建二叉树,C语言实现

    一、前序遍历创建二叉树,使用递归,头文件 BiTree.h

    /*槽点一:创建树时用scanf输入不成功*/
    
    #ifndef BITREE_H
    #define BITREE_H
    
    #include<stdio.h>
    #include<stdlib.h>
    
    typedef char ElementType;
    typedef struct treenode
    {
        ElementType data;
        struct treenode *leftchild;
        struct treenode *rightchild;
    } TreeNode;
    
    /*使用先序遍历创建二叉树*/
    TreeNode *create_bitree()
    {
        ElementType ch;
        TreeNode *T;
    
        scanf("%c",&ch);    //这样调用scanf时,树的结点一次全部输入,如果要一次一个的输入,在%c前加个空格
        if(ch!='#')
        {
            T=(TreeNode*)malloc(sizeof(TreeNode));
            T->data=ch;
            T->leftchild=create_bitree();
            T->rightchild=create_bitree();
        }
        else
        {
            T=NULL;
        }
        return T;
    }
    
    /*先序遍历*/
    void pre_order_traversal(TreeNode *T)
    {
        ElementType data;
        if(T!=NULL)
        {
            data=T->data;
            printf("%c ",data);
            pre_order_traversal(T->leftchild);
            pre_order_traversal(T->rightchild);
        }
    }
    
    #endif

    有两个地方需要注意:1、要将树的节点指针作为返回值返回,而不能向下面这样直接作为参数传入,因为作为参数传递时只是传递了T 的一个copy,后来调用malloc函数分配新的内存地址时,也是赋给了这个备份,也就是说最后T依然没有改变,碰到malloc和指针做参数都要注意这个问题;2、scanf函数的问题:scanf会读入回车符,当需要一个一个的输入字符时,可以在%c前面加个空格

    int create_bitree(TreeNode *T;)
    {
        ElementType ch;
    
        scanf("%c",&ch);    //这样调用scanf时,树的结点一次全部输入,如果要一次一个的输入,在%c前加个空格
        if(ch!='#')
        {
            T=(TreeNode*)malloc(sizeof(TreeNode));
            T->data=ch;
            create_bitree(T->leftchild);
            create_bitree(T->rightchild);
        }
        else
        {
            T=NULL;
        }
        return 1;
    }
  • 相关阅读:
    Red Hat Enterprise Linux 7.x新特性
    PostgreSQL角色和权限
    PostgreSQL的约束
    Postgresql临时表
    启迪心灵的句子
    Quartz 2.2 动态添加、修改和删除定时任务
    mysql 操作杂记
    ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务解决
    oracle 归档日志
    centos添加硬盘
  • 原文地址:https://www.cnblogs.com/xmkk/p/3301182.html
Copyright © 2011-2022 走看看