二叉树的几个递归问题

简介: 二叉树的几个递归问题

我的主页: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);
}

图:







目录
相关文章
|
2月前
搜索二叉树(二叉搜索树)的实现(递归与非递归)
搜索二叉树(二叉搜索树)的实现(递归与非递归)
|
7月前
|
存储 C++
二叉搜索树详解以及C++实现二叉搜索树(递归和非递归)
二叉搜索树详解以及C++实现二叉搜索树(递归和非递归)
51 0
|
9月前
递归与非递归实现二叉树的前中后序遍历!!
递归与非递归实现二叉树的前中后序遍历!!
28 0
非递归方式实现二叉树的前、中、后序遍历
非递归方式实现二叉树的前、中、后序遍历
|
数据采集 算法
数据结构与算法—二叉树的层序、前序中序后序(递归、非递归)遍历
层序遍历。听名字也知道是按层遍历。我们知道一个节点有左右节点。而每一层一层的遍历都和左右节点有着很大的关系。也就是我们选用的数据结构不能一股脑的往一个方向钻,而左右应该均衡考虑。这样我们就选用队列来实现。
168 0
数据结构与算法—二叉树的层序、前序中序后序(递归、非递归)遍历
|
存储 算法
非递归法创建二叉树
非递归法创建二叉树
288 0
非递归法创建二叉树
|
算法 搜索推荐
从二叉树的前中后序遍历,我们来说递归和快速排序
从二叉树的前中后序遍历,我们来说递归和快速排序
从二叉树的前中后序遍历,我们来说递归和快速排序
|
算法 前端开发 JavaScript
「LeetCode」二叉树的先中后序遍历(递归版)⚡️
「LeetCode」二叉树的先中后序遍历(递归版)⚡️
108 0
「LeetCode」二叉树的先中后序遍历(递归版)⚡️
|
机器学习/深度学习 编译器
590. N 叉树的后序遍历 :「递归」&「非递归」&「通用非递归」
590. N 叉树的后序遍历 :「递归」&「非递归」&「通用非递归」
|
机器学习/深度学习 编译器
589. N 叉树的前序遍历 :「递归」&「非递归」&「通用非递归」
589. N 叉树的前序遍历 :「递归」&「非递归」&「通用非递归」

热门文章

最新文章