二叉树的几个递归问题

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

图:


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/81591.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【GAN入门】生成 AI的概念

一、说明 GAN是生成对抗网络(Generative Adversarial Network)的缩写,是一种无监督学习算法,由Goodfellow等人于2014年提出。GAN由一个生成器网络和一个判别器网络组成,通过二者之间的对抗来训练生成器网络生成与真实样…

用Python实现链式调用

嗨喽,大家好呀~这里是爱看美女的茜茜呐 我们在使用Django的models查询数据库时,可以看到有这种写法: form app.models import XXX query XXX.objects.all() query query.filter(name123, age456).filter(salary999)在这种写法里面&#xf…

AI生成文章-AI文章生成工具

随着社会的发展人工智能技术的突破,越来越多的人开始使用AI来生成文章,但是有一个问题一直困扰着大家:AI生成的文章会不会变得千篇一律,重复无新意呢? AI生成文章的兴起 让我们简要回顾一下AI生成文章的兴起。随着深度…

Java手写最长递增子序列算法和最长递增子序列算法应用拓展案例

Java手写最长递增子序列算法和最长递增子序列算法应用拓展案例 1. 算法思维 最长递增子序列算法的实现原理如下: 创建一个长度与原始序列相同的动态规划数组dp,用于记录以每个元素为结尾的最长递增子序列的长度。初始化dp数组的所有元素为1&#xff0…

ES6——知识点记录

这里写目录标题 1.字符串支持1.codePointAt——根据字符串码元的位置得到其码点2.includes——判断字符串中是否包含指定的子字符串3.startsWith——判断字符串中是否以指定的字符串开始4.endsWith——判断字符串中是否以指定的字符串结尾5.repeat——将字符串重复指定的次数&a…

Git commit 通用提交消息规范

在使用Git进行版本控制时,可以采用一种通用的提交消息规范,以提高团队协作和代码审查的效率。一种常见的提交消息规范是使用 “Conventional Commits” 规范,它使用一些预定义的关键字来标识提交的类型和目的。以下是一些常见的关键字和它们的…

JDBC 学习笔记(基础)

示意图 目录 创建 JDBC 应用 例子:通过本地协议纯 Java 驱动程序实现JDBC 代码具体步骤: 1.注册驱动 2.建立与数据库的连接 3.获取执行SQL语句的对象 Statement 4.定义执行 SQL 语句 5.操作结果集对象 ResultSet 6.关闭操作对象及连接对象 JD…

【Tricks】关于如何防止edge浏览器偷取chrome浏览器的账号

《关于如何防止edge浏览器偷取chrome浏览器的账号》 前段时间edge自动更新了,我并没有太在意界面的问题。但是由于我使用同一个网站平台时,例如b站,甚至是邮箱,edge的账号和chrome的账号会自动同步,这就导致我很难短时…

音视频 SDL vs2017配置

一、首先我把SDL放在了C盘根目录下 二、新建空项目 三、添加main.cpp //main.cpp #include<iostream> #include <SDL.h>int main(int argc, char* argv[]) // main函数头必须这样写&#xff0c;因为SDL把main定义成了宏 {SDL_Delay(3000); // 让窗口在屏幕上保持…

CSS 实现祥云纹理背景

&#x1fab4; 背景 最近掘金出来一个中秋创意活动&#xff0c;我准备参加一下。作品方向选择用纯css做一个中秋贺卡&#xff0c;其中有一些中秋的元素和一些简单的动画&#xff0c;而贺卡背景的实现就是本文要讲的内容。 中秋贺卡成果图&#xff08;生成gif有点失真&#x1f6…

聊聊交互设计师的成长 优漫动游

1.交互设计师应当具备的能力 聊聊交互设计师的成长 如果我们简单的将用户体验领域涉及到的技能分为&#xff1a;用户研究、产品&#xff08;概念/功能&#xff09;设计、交互设计、视觉设计、工程技术&#xff0c;我认为任何一个交互设计师和视觉设计师等等&#xff0c;都…

亚马逊鲲鹏系统日程控制功能可自动管理你的买家号

亚马逊鲲鹏系统是一款针对亚马逊买家号功能比较齐全的软件&#xff0c;可以批量注册、智能养号、自动下单、自动留评、QA等&#xff0c;这一系列功能都可以用日程控制进行管理操作。日程控制管理可以让你在吃饭睡觉、逛街玩耍时自动管理你的买家账号。 日程管理功能可以设置每月…

数据结构——二叉搜索树

二叉搜索树是二叉树的一种特殊形式。 二叉搜索树具有以下性质&#xff1a; 1.每个节点中的值必须大于&#xff08;或等于&#xff09;其左侧子树中的任何值 2.每个节点中的值必须小于&#xff08;或等于&#xff09;其右侧子树中的任何值。 像普通的二叉树一样&#xff0c;我们…

分享美好瞬间,内网穿透工具助您实现公网访问本地私人图床

文章目录 1. 树洞外链网站搭建1.1 下载安装树洞外链1.2 树洞外链网页测试1.3 cpolar的安装和注册 2.本地网页发布2.1 Cpolar临时数据隧道2.2 Cpolar稳定隧道&#xff08;云端设置&#xff09;2.3 Cpolar稳定隧道&#xff08;本地设置&#xff09; 3.公网访问测试 社交平台具有庞…

《Playing repeated games with Large Language Models》全文翻译

《Playing repeated games with Large Language Models》- 使用大型语言模型玩重复游戏 论文信息摘要1. 介绍2. 相关工作3. 一般方法4. 分析不同游戏系列的行为5. 囚徒困境5.1 性别之战 6. 讨论 论文信息 题目&#xff1a;《Playing repeated games with Large Language Model…

js中运算规则

法&#xff1a; 有对象&#xff0c;对象是根据object.valueof().toString()返回的值 //toString的对象 var obj2 {toString:function(){return a} } console.log(2obj2) //输出结果2a//常规对象 var obj1 {a:1,b:2 } console.log(2obj1)&#xff1b; //输出结果 2[object…

API数据接口在电子商务中的应用

一、引言 随着互联网和移动设备的普及&#xff0c;电子商务&#xff08;电商&#xff09;已经成为人们日常生活中不可或缺的一部分。无论是购买日常生活用品&#xff0c;还是享受便捷的服务&#xff0c;电商都扮演着重要的角色。而在这个快速发展的领域中&#xff0c;API&…

uniapp h5 echarts 打包后图表点击失效/及其他失效

文章目录 期望效果实际效果环境引入echarts方式解决方法&#xff1a;注意 原因多说一句在h5打包的时候将 history 改为 hash 不然在浏览器打开后刷新会404 期望效果 实际效果 环境 pc端 window11 hbuilderx版本 3.8.12 echarts版本 5.4.3 引入echarts方式 npm install echar…

华为云云服务器云耀L实例评测 | 从零开始:华为云云服务器L实例使用教程

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

阿里云无影云桌面APP客户端下载(无影云电脑)

阿里云无影云电脑APP下载链接入口&#xff0c;支持iOS、Android、Windows、macOS和Web客户端&#xff0c;阿里云百科分享阿里云无影云电脑APP下载链接&#xff1a; 目录 阿里云无影云电脑APP下载链接入口 Windows客户端 macOS客户端 Web网页客户端 iOS客户端 Android客户…