二叉树交换左右子树

#include<iostream>
using namespace std;

struct BiNode
{
 char data;
 BiNode *lchild,*rchild;
};

class BiTree
{
public:
 BiTree(){root=Creat(root);}
 void Change(){change(root);}
 void Print(){print(root);}
 
 
 int Empty()
 {
  if(root==NULL)
   return 1;
  else
   return 0;
 }
private:
 BiNode *root;
 BiNode* Creat(BiNode *bt);
 void change(BiNode *bt);
 void print(BiNode *bt);
};

BiNode *BiTree::Creat(BiNode *bt)
{
 char ch;
 cin>>ch;
 if(ch=='#')
  return NULL;
 else 
 {
  bt=new BiNode;
  bt->data=ch;
  bt->lchild=Creat(bt->lchild);
  bt->rchild=Creat(bt->rchild);
 }
 return bt;
}

void BiTree::change(BiNode *bt)
{
    BiNode *temp;
 if(bt != NULL)
 {
        //TODO 交换左右子树 并将子树继续交换
        temp=bt->rchild;
        bt->rchild=bt->lchild;
        bt->lchild=temp;
        change(bt->lchild);
        change(bt->rchild);
 }
}

void BiTree::print(BiNode *bt) {
 cout << bt->data << " ";
 if (bt->lchild != NULL)
  print(bt->lchild);
 if (bt->rchild != NULL)
  print(bt->rchild);
}

int main()
{
 
 BiTree btree;
 
 if(btree.Empty())
  return 0;
 
 btree.Change();
    btree.Print();
 return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值