二叉树的创建

##根据中序和后续遍历构建二叉树

根据遍历的顺序不同构建二叉树 必须要有中序遍历的参与

BTNode* createBTree(const char* inOrder,const  char* posOrder, int num)
{

    if (num == 0)
    {
        return nullptr;
    }
    BTNode* node = new BTNode;
    node->data = posOrder[num - 1];
    int leftNum = 0;
    for (int i = 0; i < num; i++)
    {
        if (inOrder[i] == node->data)
            break;
        else
        {
            leftNum++;
        }
    }
    node->lchild = createBTree(inOrder, posOrder, leftNum);
    node->rchild = createBTree(inOrder + leftNum + 1, posOrder + leftNum, num - leftNum - 1);

    return node;
}

## 先序创建二叉树

BTNode* creatBTree()
{
    BTNode* node = NULL;

    char ch;
    scanf("%c", &ch);
    if (ch != '#')
    {
        node = new BTNode;
        node->data = ch;
        node->lchild = creatBTree();
        node->rchild = creatBTree();
    }
    return node;
}
 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值