利用先序扩展序列建立二叉树
   
    
    
    题目
   
- 先序扩展序列是指用特定的字符表示空子树。这里用‘#’表示二叉树为空。
- 现给出一个字符串为二叉树的线序扩展序列,要求建立一棵二叉树。
    
    
    思路
   
- 定义二叉树
- 初始化二叉树
    
    
    定义二叉树
   
- 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 版权协议,转载请附上原文出处链接和本声明。
