日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

二叉树的递归遍历与复制

發(fā)布時(shí)間:2023/12/1 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 二叉树的递归遍历与复制 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1 #include <iostream> 2 3 //定義樹(shù)的數(shù)據(jù)結(jié)構(gòu) 4 struct BiTNode 5 { 6 int data; 7 struct BiTNode *lchild, *rchild; 8 }; 9 10 typedef struct BiTNode BiTNode; 11 typedef struct BiTNode* BiTree; 12 13 14 //前序遍歷 15 void preOrder(BiTNode *root) 16 { 17 if (root == NULL) 18 { 19 return; 20 } 21 printf("%d ", root->data); 22 preOrder(root->lchild); 23 preOrder(root->rchild); 24 } 25 26 //中序遍歷 27 void inOrder(BiTNode *root) 28 { 29 if (root == NULL) 30 { 31 return; 32 } 33 inOrder(root->lchild); 34 printf("%d ", root->data); 35 inOrder(root->rchild); 36 } 37 //后序遍歷 38 void posOrder(BiTNode *root) 39 { 40 if (root == NULL) 41 { 42 return; 43 } 44 posOrder(root->lchild); 45 posOrder(root->rchild); 46 printf("%d ", root->data); 47 } 48 //創(chuàng)建拷貝函數(shù) 49 BiTNode* CopyTree(BiTNode *root) 50 { 51 BiTNode *newNode = NULL; 52 BiTNode *newLc = NULL; 53 BiTNode *newRc = NULL; 54 55 if (root == NULL) 56 { 57 return NULL; 58 } 59 //拷貝左子樹(shù) 60 if (root->lchild != NULL) 61 { 62 newLc = CopyTree(root->lchild); 63 } 64 else 65 { 66 newLc = NULL; 67 } 68 69 //拷貝右子樹(shù) 70 if (root->rchild != NULL) 71 { 72 newRc = CopyTree(root->rchild); 73 } 74 else 75 { 76 newRc = NULL; 77 } 78 79 //創(chuàng)建動(dòng)態(tài)內(nèi)存 80 newNode = (BiTNode * )malloc(sizeof(BiTNode)); 81 if (newNode == NULL) 82 { 83 return NULL; 84 } 85 86 newNode->lchild = newLc; 87 newNode->rchild = newRc; 88 newNode->data = root->data; 89 90 return newNode; 91 } 92 93 94 95 void main() 96 { 97 BiTNode t1, t2, t3, t4, t5; 98 memset(&t1, 0, sizeof(BiTNode)); 99 memset(&t2, 0, sizeof(BiTNode)); 100 memset(&t3, 0, sizeof(BiTNode)); 101 memset(&t4, 0, sizeof(BiTNode)); 102 memset(&t5, 0, sizeof(BiTNode)); 103 t1.data = 1; 104 t2.data = 2; 105 t3.data = 3; 106 t4.data = 4; 107 t5.data = 5; 108 109 t1.lchild = &t2; 110 t1.rchild = &t3; 111 t2.lchild = &t4; 112 t2.rchild = &t5; 113 printf("Old Tree's preOrder:\n"); 114 preOrder(&t1); 115 printf("\n"); 116 printf("Old Tree's inOrder:\n"); 117 inOrder(&t1); 118 printf("\n"); 119 printf("Old Tree's posOrder:\n"); 120 posOrder(&t1); 121 printf("\n"); 122 printf("Old Tree:\n"); 123 preOrder(&t1); 124 printf("\n"); 125 BiTNode* newTree = CopyTree(&t1); 126 printf("New Tree:\n"); 127 preOrder(newTree); 128 129 130 system("pause"); 131 }

?

轉(zhuǎn)載于:https://www.cnblogs.com/Lxk0825/p/9519983.html

總結(jié)

以上是生活随笔為你收集整理的二叉树的递归遍历与复制的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。