大学程序实验.数据结构.树型结构及其应用三.调换子树
- 0 目录
 - 4 树型结构及其应用
 
- 4.3 调换子树
 
- 4.3.1 题目
 - 4.3.2 源码
 - 1.1.3 下载
 
- 2 下一章
 
0 目录
4 树型结构及其应用
4.3 调换子树
4.3.1 题目
编写算法交换二叉树中所有结点的左、右子树。
4.3.2 源码
// 调换子树.cpp : Defines the entry point for the console application.
//
typedef char TElemType;
typedef int Status;
typedef struct BiTNode
{
    TElemType data;
    struct BiTNode *lchild, *rchild;
}BiTNode,*BiTree;
 
void BiTreeMenu();
Status CreateBiTree(BiTree *T);          
void PreOrderTraverse(BiTNode* T);  
void BiTreeNodeSwap(BiTNode *T);
void BiTreeMenu()
{
    printf("========二叉树子树结点交换========\n");
    printf("二叉树创建\n");
    printf("请输入二叉树各节点数:");
}
Status CreateBiTree(BiTree *T) 
{ 
    TElemType ch; 
    TElemType temp; 
    
    scanf("%c",&ch); 
    temp=getchar(); 
    if(ch == '#') 
    { 
        *T = NULL; 
    } 
    else 
    { 
        *T=(BiTree)malloc(sizeof(BiTNode) ); 
        if(!(*T)) 
        { 
            return ERROR; 
        } 
        else 
        { 
            (*T)->data=ch; 
            printf("请输入%c的左节点的值:",ch); 
            CreateBiTree(&(*T)->lchild); 
            
            printf("请输入%c的右节点的值:",ch); 
            CreateBiTree(&(*T)->rchild); 
        }
    } 
    return OK; 
}
void PreOrderTraverse(BiTNode *T)
{
    if(T)
    {
       printf(" %c",T->data);
       PreOrderTraverse(T->lchild);
       PreOrderTraverse(T->rchild);
    }
}
void BiTreeNodeSwap(BiTNode *T)
{
    BiTNode* temp;
    if(T == NULL) 
    {
        return; 
    }
    else
    {
        temp = T->lchild;
        T->lchild = T->rchild;
        T->rchild = temp;
        BiTreeNodeSwap(T->lchild);
        BiTreeNodeSwap(T->rchild);
    }
}
Status main()
{
    BiTree pRoot;
    BiTree *p=(BiTree*)malloc(sizeof(BiTree));
 
    BiTreeMenu();
    printf("请输入第一个节点的值,'#'代表没有叶节点:\n"); 
    CreateBiTree(&pRoot);
 
    BiTreeNodeSwap(pRoot);
    printf("子树调换后的树为:\n");
    PreOrderTraverse(pRoot);
    printf("\n");
 
    return OK;
}1.1.3 下载
链接地址: 4.3_调换子树.CPP










