二叉树创建错误笔记

简单笔记哈,以免再次犯错误:
typedef struct BITree{
    char data;
    struct BITree *left;
    struct BITree *right;
}BITree ,*BITreePtr;
//遍历二叉树,递归时容易出现的错误
/*当第一次将左指针参数传入时,形参指针tree指向了tree->left
 后tree=(BITree *)malloc(sizeof(BITree)); tree指向了新的地址
 tree->left并不指向新的地址,所以始终只有一个值,tree->right同样的道理
 虽然每次递归调用结束,如:createBITree(tree->left); 都有return tree;
 换回的这个tree没有变量接受,故调用结束,tree的生命周期结束,直到递归到最后一个
 tree换回给主函数变量tree;造成只有一个节点;
*/
//BITree *createBITree(BITree *tree)
//{
//    char a;
//    scanf("%c",&a);
//    //当第一位为空时直接换回空值
//    if (a == ' ')
//    {
//        tree= NULL;
//    }else{
//        tree=(BITree *)malloc(sizeof(BITree));
//        tree->data=a;
//        createBITree(tree->left);
//        createBITree(tree->right);
//    }
//  
//
//    return  tree;
//}
//应该改正为
BITree *createBITree()
{
    char a;
    BITree *tree;
    scanf("%c",&a);
   // cin>>a;
    //当第一位为空时直接换回空值
    if (a == ' ')
    {
        //tree= NULL;
        return NULL;
    }else{
        tree=(BITree *)malloc(sizeof(BITree));
        tree->data=a;
        tree->left=createBITree();
        tree->right=createBITree();
    }
    return  tree;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值