[数据结构]——二叉树(二叉树的分类和二叉树的遍历)

Posted FortunateJA

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[数据结构]——二叉树(二叉树的分类和二叉树的遍历)相关的知识,希望对你有一定的参考价值。

文章目录

一、二叉树的分类

1、满二叉树

一棵深度为h的树,最后一层无任何子结点,其余每一层上的所有结点都有两个子结点的二叉树。

2、完全二叉树

一棵深度为h的树,前h-1层为满二叉树,第h层的结点从左到右是连续的。

上图为一颗三层的平衡二叉树,前两层为满二叉树,最后一层从左到右的结点是连续的。

下面我们再举一个完全二叉树的反例:

3、平衡二叉树

一棵深度为h的二叉树,任意节点的子树的高度差都小于等于1。

再举一个平衡二叉树的反例:

二、二叉树的四种遍历

先根遍历,中根遍历,后根遍历统称为深度遍历;层序遍历成为广度遍历。

1、先根遍历

先根遍历又称先序遍历,在遍历二叉树时的顺序为根左右。顾名思义,就是先处理根结点,根结点处理完毕,在紧接着处理当前根的左右子树。
先根遍历演示:



void PrevOrder(Tree *root)

	if(root==NULL)
	return ;
	printf("%c ",root->val);
	PrevOrder(root->left);
	PrevOrder(root->right);

2、中根遍历

中根遍历又名中序遍历,顺序为左根右
中根遍历顺序演示:


void InOrder(Tree *root)

	if(root==NULL)
	return ;
	InOrder(root->left);
	printf("%c ",root->val);
    InOrder(root->right);

3、后根遍历

后根遍历又称后序遍历,遍历顺序为左右根,先处理左子树,左子树处理完之后处理右子树,左右子树均处理完毕后再处理根结点。
后根遍历顺序演示:

void PostOrder(Tree *root)

	if(root==NULL)
	return ;
	PostOrder(root->left);
	PostOrder(root->right);
	printf("%c ",root->val);

4、层序遍历

层序遍历顺序:从上到下,从左到右,依次遍历。层次遍历又称为广度遍历。

以上是关于[数据结构]——二叉树(二叉树的分类和二叉树的遍历)的主要内容,如果未能解决你的问题,请参考以下文章

Java 数据结构树和二叉树

图解数据结构树和二叉树全面总结

数据结构—二叉树如何删除一个结点二叉树排序树和二叉搜索树的遍历

数据结构学习笔记——广义表树和二叉树的基本知识

数据结构学习笔记——广义表以及树和二叉树的基本知识

二叉树的先序/中序/后序/层次遍历