数据结构复习——二叉树的表示及遍历

原创 2016年05月31日 21:28:49

一、常用概念

1.一棵有N个结点的树有N-1条边

2.结点的度:结点的子树个数

3.树的度:树的所有结点中最大的度数

4.一棵树采用  firstChild-nextSibling 表示方法可以转换为二叉树

5.二叉树的子树有左右之分,二叉树有5中基本形式

6.满二叉树:深度为k,共有2^k-1个结点

7.完全二叉树:按序号对应

二、二叉树遍历

typedef struct treeNode * PTree;
struct treeNode{	//树的结点定义
	int Data;
	PTree Left;
	PTree Right;
};

/*
*二叉树的遍历
*/

/*  --------------------递归遍历-----------------------------*/

//递归前序遍历
void preTravel(PTree tree){
	if(tree){
		printf("%d ", tree->Data);
		preTravel(tree->Left);
		preTravel(tree->Right);
	}
}

//递归中序遍历
void inTravel(PTree tree){
	if(tree){
		inTravel(tree->Left);
		printf("%d ", tree->Data);
		inTravel(tree->Right);
	}
}

//递归后序遍历
void afterTravel(PTree tree){
	if(tree){
		afterTravel(tree->Left);
		afterTravel(tree->Right);
		printf("%d ", tree->Data);
	}
}

/*  --------------------非递归遍历-----------------------------*/

//非递归中序遍历

void inTravel2(PTree tree){
	PStack s = initStack();		//初始化一个空栈
	PTree t;
	while(t || !isEmpty(s)){
		while(t){
			push(s, t);
			t = t->Left;
		}
		if(!isEmpty(s)){
			t = pop(s);
			printf("%d ", t->Data);
			t = t->Right;
		}
	}
}

//非递归先序遍历

//非递归中序遍历

void preTravel2(PTree tree){
	PStack s = initStack();		//初始化一个空栈
	PTree t;
	while(t || !isEmpty(s)){
		while(t){
			printf("%d ", t->Data);
			push(s, t);
			t = t->Left;
		}
		if(!isEmpty(s)){
			t = pop(s);
			t = t->Right;
		}
	}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

树的完整实现--遍历--应用

//Tree.h #pragma once #include #include using namespace std; template class Tree; template class Tre...

数据结构(六)——二叉树 前序、中序、后序、层次遍历及非递归实现 查找、统计个数、比较、求深度的递归实现

一、基本概念 每个结点最多有两棵子树,左子树和右子树,次序不可以颠倒。 性质: 1、非空二叉树的第n层上至多有2^(n-1)个元素。 2、深度为h的二叉树至多有2^h-1个结点。 满二叉树:所有...
  • fansongy
  • fansongy
  • 2011年09月22日 21:10
  • 264379

数据结构——二叉树 前序、中序、后序、层次遍历及非递归实现 查找、统计个数、比较、求深度的递归实现

一、基本概念 每个结点最多有两棵子树,左子树和右子树,次序不可以颠倒。 性质: 1、非空二叉树的第n层上至多有2^(n-1)个元素。 2、深度为h的二叉树至多有2^h-...

数据结构——树(4):二叉树前序,中序,后序遍历互求

总结下二叉树前序、中序、后序遍历相互求法,即如果知道两个的遍历,如何求第三种遍历方法。前序、中序、后序遍历的特性:前序遍历: 1.访问根节点 2.前序遍历左子树 3...
  • picway
  • picway
  • 2017年05月15日 22:41
  • 270

数据结构(19)——二叉树后序及层次遍历

A - 二叉树后序及层次遍历Description 已知一棵二叉树的前序遍历和中序遍历,求二叉树的后序遍历和层序遍历。 Input 输入数据有多组,第一行是一个整数t (t...

数据结构4——Java 二叉树 遍历

二叉树这个东西哇看着真是无语…尤其是自学的,..,,.简直想哭啊有木有!!!Java的资料太少,书上都是C或者C++,自己转java,心好累~~二叉树常用构建方式 参考资料大致有两种方式, 顺序输入...

(编程训练)再回首,数据结构——二叉树的前序、中序、后序遍历(递归)

最近在复习数据结构,顺便看看大一的时候写的代码,看完之后比当初有了更加深刻的体会。        希望这些能提供给初学者一些参考。         在VC++6.0下可运行,当初还写了不少注释。  ...

数据结构(六)——二叉树 前序、中序、后序、层次遍历及非递归实现 查找、统计个数、比较、求深度的递归实现

一、基本概念 每个结点最多有两棵子树,左子树和右子树,次序不可以颠倒。 性质: 1、非空二叉树的第n层上至多有2^(n-1)个元素。 2、深度为h的二叉树至多有2^h-1个结点。 满二...
  • hgdwlsh
  • hgdwlsh
  • 2014年04月02日 16:25
  • 592

数据结构——二叉树的遍历

“树”是一种重要的数据结构,本文浅谈二叉树的遍历问题,采用C语言描述。   一、二叉树基础 1)定义:有且仅有一个根结点,除根节点外,每个结点只有一个父结点,最多含有两个子节点,子节点有左右之分...

数据结构 ——二叉树 前序、中序、后序、层次遍历及非递归实现 查找、统计个数、比较、求深度的递归实现

一、基本概念 每个结点最多有两棵子树,左子树和右子树,次序不可以颠倒。 性质: 1、非空二叉树的第n层上至多有2^(n-1)个元素。 2、深度为h的二叉树至多有2^h-...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据结构复习——二叉树的表示及遍历
举报原因:
原因补充:

(最多只允许输入30个字)