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

本文探讨了树的四种主要遍历方法:中序遍历、先序遍历、后序遍历和宽度遍历(层次遍历)。这些遍历方式是理解二叉树和数据结构基础的关键。
摘要由CSDN通过智能技术生成


树的遍历

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


// 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;
}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值