首页 > 其他 > 详细

复制树

时间:2019-11-16 23:55:04      阅读:158      评论:0      收藏:0      [点我收藏+]
#include<iostream>
using namespace std;

typedef struct BiNode{
    char data;
    struct BiNode *lchild,*rchild;
}BiTNode,*BiTree;

typedef struct StackNode{
    BiTNode data;
    struct StackNode *next;
}

void CreateBiTree(BiTree &T){
    char ch;
    cin>>ch;
    if(ch=='#') T=NULL;
    else{
        T=new BiTNode;
        T->data=ch;
        CreateBiTree(T->lchild);
        CreateBiTree(T->rchild);
    }
}

void InitStack(LinkStack &S)
{
    //构造一个空栈S,栈顶指针置空
    S=NULL;
}

bool StackEmpty(LinkStack S)
{
    if(!S)
        return true;
    return false;
}

void Push(LinkStack &S,BiTree e)
{
    //在栈顶插入元素*e
    StackNode *p=new StackNode;
    p->data=*e;
    p->next=S;
    S=p;
}

void Pop(LinkStack &S,BiTree e)
{
    if(S!=NULL)//原书上写的是if(S==NULL)return ERROR;
    {   
        *e=S->data;
        StackNode *p=S;
        S=S->next;
        delete p;
    }
} 

void Copy(BiTree T,BiTree &newT){
    if(T==NULL){
        newT=NULL;
        return;
    }else{
        newT=new BiTNode;
        newT->data=T->data;
        Copy(t->lchild,newT->lchild);
        Copy(t->rchild,newT->rchild);
    }
}

void InOrderTraverse(BiTree T)
{  
    //中序遍历二叉树T的递归算法
    if(T){
        InOrderTraverse(T->lchild);
        cout << T->data;
        InOrderTraverse(T->rchild);
    }
}

void main()
{
    BiTree tree,new_tree;
    cout<<"请输入建立二叉树的序列:\n";
    CreateBiTree(tree);
    Copy(tree,new_tree);
    cout<<"复制得到的新树的中序序列:\n";
    InOrderTraverse(new_tree);
    cout<<endl;
}

复制树

原文:https://www.cnblogs.com/ygjzs/p/11874582.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!