二叉树的几个递归问题
作者:小教学发布时间:2023-09-25分类:程序开发学习浏览:139
导读:我的主页: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);
}
图:
- 程序开发学习排行
- 最近发表
-
- PSV官方英日文游戏精选集
- Digital Marketing Freelancer | WordPress Theme 博客主题下载
- Pixel Hair Spa | WordPress Theme 博客主题下载
- Aster Travel Blog | WordPress Theme 博客主题下载
- Urbana | WordPress Theme 博客主题下载
- WENS Next Gen Blog | WordPress Theme 博客主题下载
- PSV游戏最简安装教程
- PSV中文游戏全集
- Otter Blocks Gutenberg Blocks,Page Builder for Gutenberg Editor amp; FSE 最好的WordPress常用插件下载 博客插件模块
- 支付表格、立即购买按钮和发票系统|GetPaid 最好的WordPress通用插件下载 博客插件模块