1const n=`--- 2title: äºåæ å ¥é¨ 3description: å¦ä¹ ç¬è®° 4author: ShenNya 5date: 2025-04-15 17:07:00 +0800 6categories: [Algorithm] 7tags: [Algorithm, C++] 8math: true 9mermaid: true 10--- 11 12> å¦æä½ çå°æåè¿äºè¿æ ·çç¬è®°äºï¼é£ä¸å®æ¯æç大èåä¸ä¸ï¼èä¹åè¿ä¸ªä¸è¥¿åæ¯è¾å¸¸ç¨ 13 14# äºåæ 15 16äºåæ æ¯ä¸ç§æ å½¢ç»æ(åºè¯) 17 18å®çç¹ç¹æ¯ä¸ä¸ª\`æ ¹(root)\`æå¤æä¸¤ä¸ª\`åèç¹(node)\` 19 20 21**æ ¹èç¹ï¼Rootï¼**ï¼æ çèµ·å§èç¹ï¼æææä½é½ä»æ ¹èç¹å¼ 22 23**ç¶èç¹ï¼Parentï¼**ï¼æä¸ªèç¹çç´æ¥ä¸çº§è 24 25**åèç¹ï¼Childï¼**ï¼æä¸ªèç¹çç´æ¥ä¸çº§è 26 27**å¶åèç¹ï¼Leafï¼**ï¼æ²¡æåèç¹çè 28 29**深度ï¼Depthï¼**ï¼èç¹å°æ ¹èç¹çè·¯å¾é¿ 30 31**é«åº¦ï¼Heightï¼**ï¼ä»å½åèç¹å°æè¿å¶åèç¹çè·¯å¾é¿ 32 33\`\`\`text 34 A 35 / \\ 36 B C 37 / \\ / \\ 38 D E F G 39\`\`\` 40 41åï¼äºåæ 42 43 44以\`A\`为ä¾ï¼\`A\`为\`æ ¹\`ï¼\`B\`å\`C\`为两个\`èç¹\` 45 46\`A\`为\`B\`çç¶èç¹ 47 48忶以\`B\`ä¸ºæ ¹, \`D\`å\`E\`为两个\`èç¹\`ï¼ä»¥æ¤ç±»æ¨ 49 50 51# ç§ç±» 52 53## 满äºåæ 54 55é¤äºå¶åèç¹ï¼æ²¡æåèç¹çèç¹ï¼å¤é½æä¸¤ä¸ªåèç¹ç 56 57满äºåæ ï¼ 58\`\`\`text 59 A 60 / \\ 61 B C 62 / \\ / \\ 63 D E F G 64 65\`\`\` 66 67**é**满äºåæ ï¼ 68\`\`\`text 69 A 70 / \\ 71 B C 72 / \\ / 73 D E F 74 75\`\`\` 76 77 78## å®å ¨äºåæ 79 801. é¤äºæåä¸å±å¤ï¼æ¯å±çèç¹é½å¡«æ»¡äº 812. æåä¸å±èç¹ 82 83 84å®å ¨äºåæ ï¼ 85 86\`\`\`text 87 A 88 / \\ 89 B C 90 / \\ / \\ 91 D E F G 92 93\`\`\` 94\`\`\`text 95 A 96 / \\ 97 B C 98 / \\ / 99 D E F 100 101\`\`\` 102 103**é**å®å ¨äºåæ ï¼ 104 105\`\`\`text 106 A 107 / \\ 108 B C 109 / \\ \\ 110 D E G 111 112\`\`\` 113 114> 餿¤ä¹å¤è¿æ *平衡äºåæ * å *äºåæç´¢æ *, 䏿¬¡ä¸å®.jpg 115 116# éå 117 118\`\`\`text 119 A 120 / \\ 121 B C 122 / \\ / \\ 123 D E F G 124\`\`\` 125 126## å åºéå (Preorder) 127 128æ ¹ â å·¦ â å³ 129 130\`\`\` 131ABDECFG 132\`\`\` 133 1341. 仿 ¹åºå(A) 1352. å éåå·¦åæ (B) 1363. åç°\`B\`为\`D\` \`E\`çç¶èç¹ 1374. éå\`B\`çå·¦åæ \`D\` 1385. \`D\`没æ\`åèç¹\`, äºæ¯éåå³åæ \`E\`
1396. \`A\`çå·¦åæ \`B\`éå宿¯ï¼å¼å§éåå³åæ \`C\` 1407. 以æ¤ç±»æ¨ 141 142## ä¸åºéå (Inorder) 143 144å·¦ â æ ¹ â å³ 145 146\`\`\` 147DBEAFCG 148\`\`\` 149## ååºéå (Postorder) 150 151å·¦ â å³ â æ ¹ 152 153\`\`\` 154DEBFGCA 155\`\`\` 156## å±åºéå (Level-order) 157 158æå±ä»ä¸å°ä¸ãä»å·¦å°å³è®¿é®èç¹ 159 160\`\`\` 161ABCDEFG 162\`\`\` 163 164 165# C++å®ç° 166 167## èç¹ 168 169é¦å å®ç°ä¸ä¸ªèç¹ï¼è¿ä¸ªèç¹æä¸ä¸ªå¼ï¼å¹¶ä¸æ0-2个åèç¹ï¼ 170 171\`\`\`cpp 172struct TreeNode{ 173 char val; // å½åèç¹çå¼ 174 TreeNode* left; // å·¦åèç¹ 175 TreeNode* right;// å³åèç¹ 176 TreeNode(char v) : val(v), left(nullptr), right(nullptr) {} 177}; 178\`\`\` 179 180## å建ä¸ä¸ªæ 181 182æä»¬æ¥å建ä¸ä¸ªè¿æ ·çæ ï¼ 183\`\`\`text 184 A 185 / \\ 186 B C 187 / \\ 188 D E 189\`\`\` 190 191\`\`\`cpp 192 193int main(){ 194 TreeNode* root = new TreeNode('A'); // è¿å°±æ¯æ ¹èç¹ 195 root->left = new TreeNode('B'); 196 root->right = new TreeNode('C'); 197 root->left->left = new TreeNode('D'); 198 root->left->right = new TreeNode('E'); 199 200 return 0; 201} 202\`\`\` 203 204## å åºæå 205 206ä¼ å ¥æ ¹èç¹ä¹åæç §æ ¹å·¦å³ç顺åºéå½ 207 208\`\`\`cpp 209void preorder(TreeNode* root){ 210 // è¾åºæ ¹ 211 cout << root->val; 212 if (root->left != nullptr){ 213 // éå½å·¦åæ 214 preorder(root->left); 215 } 216 if (root->right != nullptr){ 217 // éå½å³åæ 218 preorder(root->right); 219 } 220} 221\`\`\` 222 223## ä¸åºæå 224 225ä¼ å ¥æ ¹èç¹ä¹åæç §å·¦æ ¹å³ç顺åºéå½ 226 227 228\`\`\`cpp 229void inorder(TreeNode* root){ 230 if (root->left != nullptr){ 231 inorder(root->left); 232 } 233 cout << root->val; 234 if (root->right != nullptr){ 235 inorder(root->right); 236 } 237} 238\`\`\` 239 240## åç»æå 241 242ä¼ å ¥æ ¹èç¹ä¹åæç §å·¦å³æ ¹ç顺åºéå½ 243 244\`\`\`cpp 245void postorder(TreeNode* root){ 246 if (root->left != nullptr){ 247 postorder(root->left); 248 } 249 if (root->right != nullptr){ 250 postorder(root->right); 251 } 252 cout << root->val; 253} 254\`\`\` 255 256## å±åºæå 257 258å±åºæå䏿³éè¦éå½ï¼ä½¿ç¨éåå³å¯ 259 260\`\`\`cpp 261void levelorder(TreeNode* root){ 262 queue<TreeNode*> q; 263 q.push(root); 264 while (!q.empty()){ 265 TreeNode* node = q.front(); 266 cout << node->val; 267 if (node->left){ 268 q.push(node->left); 269 } 270 if (node->right){ 271 q.push(node->right); 272 } 273 q.pop(); 274 } 275} 276\`\`\` 277 278## 宿´ä»£ç 279 280\`\`\`cpp 281#include <iostream> 282#include <queue> 283 284using namespace std; 285 286struct TreeNode{ 287 char val; 288 TreeNode* left; 289 TreeNode* right; 290 TreeNode(char v) : val(v), left(nullptr), right(nullptr) {} 291}; 292 293void preorder(TreeNode* root){ 294 cout << root->val; 295 if (root->left != nullptr){ 296 preorder(root->left); 297 } 298 if (root->right != nullptr){ 299 preorder(root->right); 300 } 301} 302 303void inorder(TreeNode* root){ 304 if (root->left != nullptr){ 305 inorder(root->left); 306 } 307 cout << root->val; 308 if (root->right != nullptr){ 309 inorder(root->right); 310 } 311} 312 313void postorder(TreeNode* root){ 314 if (root->left != nullptr){ 315 postorder(root->left); 316 } 317 if (root->right != nullptr){ 318 postorder(root->right); 319 } 320 cout << root->val; 321} 322 323void levelorder(TreeNode* root){ 324 queue<TreeNode*> q; 325 q.push(root); 326 while (!q.empty()){ 327 TreeNode* node = q.front(); 328 cout << node->val; 329 if (node->left){ 330 q.push(node->left); 331 } 332 if (node->right){ 333 q.push(node->right); 334 } 335 q.pop(); 336 } 337} 338int main(){ 339 TreeNode* root = new TreeNode('A'); 340 root->left = new TreeNode('B'); 341 root->right = new TreeNode('C'); 342 root->left->left = new TreeNode('D'); 343 root->left->right = new TreeNode('E'); 344 345 preorder(root); 346 cout << endl; 347 inorder(root); 348 cout << endl; 349 postorder(root); 350 cout << endl; 351 levelorder(root); 352 return 0; 353} 354\`\`\` 355 356 357`;export{n as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.