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

  • Post author:
  • Post category:其他




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



题目

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



思路

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



定义二叉树

  • 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;
}



版权声明:本文为Chancy_Lu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。