联系我们
简单又实用的WordPress网站制作教学
当前位置:网站首页 > 程序开发学习 > 正文

二叉树的几个递归问题

作者:小教学发布时间:2023-09-25分类:程序开发学习浏览:56


导读:我的主页:Lei宝啊愿所有美好如期而遇前言:二叉树的递归是二叉树很重要的问题,几乎解决二叉树的问题都要使用递归,接下来我们将解决二叉树几个最基础的递归问题。目录...

我的主页:Lei宝啊

愿所有美好如期而遇


前言:

二叉树的递归是二叉树很重要的问题,几乎解决二叉树的问题都要使用递归,接下来我们将解决二叉树几个最基础的递归问题。


目录

前言:

二叉树的前序,中序,后序遍历:

树的结构:

前序递归遍历:

中序递归遍历: 

后续递归遍历:

求树的节点数:

求叶子节点数:

 第k层节点数:


二叉树的前序,中序,后序遍历:

树的结构:

typedef struct BT_Tree
{
	int data;
	struct BT_Tree* left;
	struct BT_Tree* right;
}BT_Tree;

 前序递归遍历:

void PrevOrder(BT_Tree* node)
{
	if (node == NULL)
		return;

	printf("%d ", node->data);
	PrevOrder(node->left);
	PrevOrder(node->right);		
}

黄瓜个图看看:


中序递归遍历: 

void InOrder(BT_Tree* node)
{
	if (node == NULL)
		return;
	
	PrevOrder(node->left);
	printf("%d ", node->data);
	PrevOrder(node->right);
}

花瓜个图看看:


后续递归遍历:

void LastOrder(BT_Tree* node)
{
	if (node == NULL)
		return;

	PrevOrder(node->left);	
	PrevOrder(node->right);
	printf("%d ", node->data);
}

画个图看看:


 求树的节点数:

int SizeofNode(BT_Tree* node)
{
	if (node == NULL)
		return 0;

	return SizeofNode(node->left) + SizeofNode(node->right) + 1;
}

画个图:


求叶子节点数:

int SizeofLeaf(BT_Tree* node)
{
	if (node == NULL)
		return 0;
	if (node->left == NULL && node->right == NULL)
		return 1;

	return SizeofLeaf(node->left) + SizeofLeaf(node->right);
}

 画图:


 第k层节点数:

int SizeInLineKNode(BT_Tree* node, int k)
{
	if (node == NULL)
		return 0;

	if (k == 1)
		return 1;

	return SizeInLineKNode(node->left, k - 1) + SizeInLineKNode(node->right, k - 1);
}

图:






程序开发学习排行
最近发表
网站分类
标签列表