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