二叉树的遍历(Tree Traversals)参考极客

来源:互联网 发布:项目数据分析公司排名 编辑:程序博客网 时间:2024/06/07 04:51


树的遍历

不像线性数据结构(数组,链表,队列,栈),仅仅有一种逻辑方式遍历,树可以通过不同的方式遍历,中序遍历,先序遍历和后序遍历,宽度遍历也就是层次遍历,


// tree_tra.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <stdio.h>#include <stdlib.h>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); printf("\nPreorder traversal of binary tree is \n");printPreorder(root);printf("\nInorder traversal of binary tree is \n");printInorder(root); printf("\nPostorder traversal of binary tree is \n");printPostorder(root);getchar();return 0;}int _tmain(int argc, _TCHAR* argv[]){struct node *root = newNode(1);root->left = newNode(2);root->right = newNode(3);root->left->left = newNode(4);root->left->right = newNode(5);printf("\nPreorder traversal of binary tree is \n");printPreorder(root);printf("\nInorder traversal of binary tree is \n");printInorder(root);printf("\nPostorder traversal of binary tree is \n");printPostorder(root);getchar();return 0;}





0 0