1. 程式人生 > >二叉樹遍歷-c實現

二叉樹遍歷-c實現

bin lib malloc code mage -a oid inf 樹遍歷

這裏主要是三種遍歷,先序(preorder,NLR),中序(Inorder,LNR),後序(Postorder,LRN)

N:node,L:left,R:right

基本排序:先序(NLR,節點,左,右),中序(LNR,左,節點,右),後序(LRN,左,右,節點)

要點:在每一種排序裏,必須遵守基本排序。看圖:

技術分享圖片

為了更加直觀的了解,看下面的c語言實現的代碼,參考了:https://www.geeksforgeeks.org/tree-traversals-inorder-preorder-and-postorder/

#include<cstdio>
#include<cstdlib>
using
namespace std; struct node{ int data; struct node* left; struct node* right; }; struct node* newNode(int data){ struct node* node = (struct node*)malloc(sizeof(struct node)); node->data=data; node->left=NULL; node->right=NULL; return node; } void
printPostorder(struct node* node){ if(node == NULL) return; printPostorder(node->left); printPostorder(node->right); printf("%d ",node->data); } void printInorder(struct node* node){ if(node==NULL){ return; } printInorder(node->left); printf(
"%d ",node->data); printInorder(node->right); } void printPreorder(struct node* node){ if(node==NULL){ return; } printf("%d ",node->data); printPreorder(node->left); printPreorder(node->right); } int main(){ struct node *root=newNode(1); root->left=newNode(2); root->right=newNode(3); root->left->left=newNode(4); root->left->right=newNode(5); root->right->left=newNode(6); root->right->right=newNode(7); root->left->left->left=newNode(8); root->left->left->right=newNode(9); root->left->right->left=newNode(10); root->left->right->right=newNode(11); root->right->left->left=newNode(12); root->right->left->right=newNode(13); root->right->right->left=newNode(14); root->right->right->right=newNode(15); printf("\nPreorder raversal of binary tree is \n"); printPreorder(root); printf("\nInorder raversal of binary tree is \n"); printInorder(root); printf("\nPostorder raversal of binary tree is \n"); printPostorder(root); return 0; }

輸出:

Preorder raversal of binary tree is
1 2 4 8 9 5 10 11 3 6 12 13 7 14 15
Inorder raversal of binary tree is
8 4 9 2 10 5 11 1 12 6 13 3 14 7 15
Postorder raversal of binary tree is
8 9 4 10 11 5 2 12 13 6 14 15 7 3 1

寫一個中序輸出的圖解:

技術分享圖片

二叉樹遍歷-c實現