根据一个广义表来创建一个二叉树

2024-09-08
56 阅读
  • 根据一个广义表来创建一个二叉树

算法中用了一个指针数组来模拟栈存储结点的双亲指针,根据读入广义表中的字符分四种不同的情况处理:

  1. 子表
  2. 子表嵌套子表
  3. 结点
  4. , 空结点
') {
        switch (ch) {
            case '(':
                top++;
                st[top]=p;
                k=1;
                break;
            case ')':
                top--;
                break;
            case ',':
                k=2;
                break;
            default://读到的是字符,作为结点
                p = (BinTNode *)malloc(sizeof(BinTNode));
                p->data = ch;//填写数据域
                p->lchild=p->rchild=NULL;//填写指针域
                if(b==NULL){//建立第一个结点
                    b=p;
                }else{
                    switch (k) {
                        case 1://前一个字符是‘(’,该结点应该插入左子树
                            st[top]->lchild=p;
                            break;
                        case 2://前一个字符是‘,’,该结点应该插入右子树
                            st[top]->rchild=p;
                            break;
                    }
                }
                break;
        }
        j++;
        ch=str[j];//读取下一个字符
    }
    return b;//返回根结点的指针
}




中间读取的变化

分享至:
管理员

小草

专注人工智能、前沿科技领域报道,致力于为读者带来最新、最深度的科技资讯。

评论 (0)

当前用户头像