一个普通二叉树的遍历
Posted 立体风
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个普通二叉树的遍历相关的知识,希望对你有一定的参考价值。
要点:二叉树遍历,要针对基本图形的遍历,先序(NLR),中序(LNR),后序(LRN),且往上看,它是某节点的左子,但往下看,它可能还是某节点的根,这时就要继续往下找,直到找到没有子(也就是叶子)时,左子,才是真正的左子,自己体会。
图形:
程序:
#include<stdio.h> #include<stdlib.h> struct node{ char data; struct node* left; struct node* right; }; struct node* newNode(char 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("%c ",node->data); } void printInorder(struct node* node){ if(node==NULL){ return; } printInorder(node->left); printf("%c ",node->data); printInorder(node->right); } void printPreorder(struct node* node){ if(node==NULL){ return; } printf("%c ",node->data); printPreorder(node->left); printPreorder(node->right); } int main(){ struct node *root=newNode(\'A\'); root->left=newNode(\'B\'); root->right=newNode(\'C\'); root->left->left=newNode(\'D\'); root->right->left=newNode(\'F\'); root->right->right=newNode(\'H\'); root->left->left->right=newNode(\'E\'); root->right->right->left=newNode(\'I\'); root->right->right->right=newNode(\'G\'); 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 A B D E C F H I G Inorder raversal of binary tree is D E B A F C I H G Postorder raversal of binary tree is E D B F G I H C A
以上是关于一个普通二叉树的遍历的主要内容,如果未能解决你的问题,请参考以下文章