【数据结构】利用先序扩展序列建立二叉树

本文介绍如何根据包含特定字符(如'#'表示空子树)的先序扩展序列来构建二叉树,包括定义二叉树的数据结构和初始化二叉树的步骤。

利用先序扩展序列建立二叉树

题目

  • 先序扩展序列是指用特定的字符表示空子树。这里用‘#’表示二叉树为空。
  • 现给出一个字符串为二叉树的线序扩展序列,要求建立一棵二叉树。

思路

  • 定义二叉树
  • 初始化二叉树
定义二叉树
  • C定义二叉树

typedef struct TNode *Position;
typedef Position BinTree;
struct TNode
{
    ElementType Data;
    BinTree Left;
    BinTree Right;
};

  • C++定义二叉树
typedef struct TNode{
    char Data;
    TNode* Left;
    TNode* Right;
}*BinTree;
初始化二叉树
  • 下面给出两个函数,一个带参,一个不带参。
BinTree CreateBinTree()
{
    BinTree BT;
    BT = (BinTree)malloc(sizeof(struct TNode));
    ElementType ch;
    scanf("%c",&ch);
    if(ch == '#'){
        BT = NULL;
        return BT;
    }
    BT->Data = ch;
    BinTree LBT, RBT;
    LBT = CreatBinTree();
    RBT = CreatBinTree();
    BT->Left = LBT;
    BT->Right = RBT;
    return BT;
}
//主函数中:
int main(){
	……
	BinTree BT;
	CreateBinTree(&BT);	//注意:这里有个取地址符
	……
}

void CreateBinTree(BinTree *BT){	//注意传的参数
    char ch;
    cin >> ch;
    if(ch == '#')   *BT = NULL;
    else{
        *BT = (BinTree)malloc(sizeof(TNode));
        (*BT)->data = ch;
        CreateBinTree(&((*BT)->Left));
        CreateBinTree(&((*BT)->Right));
    }
    return;
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值