大三今日总结...

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

include <stdio.h>

include <stdlib.h>

// 二叉树节点结构体
typedef struct BiTNode {
char data;
struct BiTNode *lchild;
struct BiTNode *rchild;
} BiTNode, *BiTree;

// 先序创建二叉树
void CreateBiTree(BiTree T) {
char ch;
scanf("%c", &ch);
if (ch == '#') {
T = NULL;
} else {
T = (BiTree)malloc(sizeof(BiTNode));
(
T)->data = ch;
CreateBiTree(&(
T)->lchild);
CreateBiTree(&(
T)->rchild);
}
}

// 中序遍历二叉树
void InOrderTraverse(BiTree T) {
if (T) {
InOrderTraverse(T->lchild);
printf("%c", T->data);
InOrderTraverse(T->rchild);
}
}

// 交换二叉树每个节点的左右子树
void SwapSubTree(BiTree T) {
if (T) {
BiTree temp;
temp = T->lchild;
T->lchild = T->rchild;
T->rchild = temp;
SwapSubTree(T->lchild);
SwapSubTree(T->rchild);
}
}

int main() {
BiTree T;
// 创建二叉树
CreateBiTree(&T);

// 输出原二叉树的中序遍历序列
InOrderTraverse(T);
printf("\n");

// 交换二叉树每个节点的左右子树
SwapSubTree(T);

// 输出交换后的二叉树的中序遍历序列
InOrderTraverse(T);

return 0;

}

posted @ 2026-01-09 13:56  C(5,3)  阅读(3)  评论(0)    收藏  举报