7-2 交换二叉树每个结点的左孩子和右孩子

以二叉链表作为二叉树的存储结构,编写程序实现:交换二叉树每个结点的左子树和右子树。以先序遍历构建一棵二叉树,输出中序遍历结果,交换每个节点的左右子树后,输出中序遍历结果

#include<iostream>
using namespace std;
typedef int Status;
typedef char TElemType;
typedef struct BiTNode
{
 TElemType data;
 struct BiTNode* lchild, *rchild;
}BiTNode,*BiTree;


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

void ChangeTree(BiTree T)
{
    BiTree temp=NULL;
    if(T){
        temp=T->lchild;
        T->lchild=T->rchild;
        T->rchild=temp; 
        ChangeTree(T->lchild);
        ChangeTree(T->rchild);
    }
} 

void InOrderTraverse(BiTree T){
  if(T==NULL) return;
  InOrderTraverse(T->lchild);
  cout<<T->data;
  InOrderTraverse(T->rchild);
}

int main()
{
    BiTree t;
    CreateBiTree(t);
    InOrderTraverse(t);
    cout<<endl;
    ChangeTree(t);
    InOrderTraverse(t);
}

学习一下大佬对树的无敌操作

摘自: https://blog.csdn.net/m0_56699208

posted @ 2022-10-25 19:44  旺旺大菠萝  阅读(204)  评论(0编辑  收藏  举报