标签:alt class 镜像 lap src type 输出 null 递归
题目:完成一个函数,输入一个二叉树,该函数输出它的镜像
1 #include<stdio.h> 2 #include<stdlib.h> 3 typedef struct node 4 { 5 char value; 6 struct node *lchild; 7 struct node *rchild; 8 }TreeNode,*Tree; 9 //头插法创建二叉树 10 Tree CreateTree(Tree &t) 11 { 12 char ch; 13 scanf_s("%c", &ch); 14 if (ch == ‘#‘) 15 t = NULL; 16 else 17 { 18 t = (Tree)malloc(sizeof(TreeNode)); 19 if (!t) 20 { 21 printf("分配内存出错!"); 22 return NULL; 23 } 24 t->value = ch; 25 CreateTree(t->lchild); 26 CreateTree(t->rchild); 27 } 28 return t; 29 } 30 //求二叉树镜像 31 void MirrorRecursively(Tree pNpde) 32 { 33 if (pNpde == NULL) 34 return ; 35 if (pNpde->lchild == NULL && pNpde->rchild == NULL) 36 return ; 37 Tree pTemp = pNpde->lchild; 38 pNpde->lchild = pNpde->rchild; 39 pNpde->rchild = pTemp; 40 if (pNpde->lchild) 41 MirrorRecursively(pNpde->lchild); 42 if (pNpde->rchild) 43 MirrorRecursively(pNpde->rchild); 44 } 45 //先序递归遍历 46 void PreOrder(Tree T) 47 { 48 if (T) 49 { 50 printf("%c",T->value); 51 PreOrder(T->lchild); 52 PreOrder(T->rchild); 53 } 54 } 55 int main() 56 { 57 Tree T; 58 printf("创建二叉树,‘#’代表空:"); 59 CreateTree(T); 60 printf("先序遍历二叉树:"); 61 PreOrder(T); 62 MirrorRecursively(T); 63 if (T) 64 { 65 printf("\n先序遍历镜像二叉树: "); 66 PreOrder(T); 67 } 68 else 69 printf("创建的树为空"); 70 printf("\n"); 71 return 0; 72 } 73 /* 74 创建二叉树,‘#’代表空:ABD##E##CF##G## 75 先序遍历二叉树:ABDECFG 76 先序遍历镜像二叉树: ACGFBED 77 请按任意键继续. . . 78 79 创建二叉树,‘#’代表空:# 80 先序遍历二叉树:创建的树为空 81 请按任意键继续. . . 82 83 */
标签:alt class 镜像 lap src type 输出 null 递归
原文地址:http://www.cnblogs.com/xyzyj/p/7396614.html