计算二叉树的深度

article/2025/11/11 1:48:49

[算法步骤]

如果是空树,递归结束,深度为0;否则执行一下操作

  • 递归计算左子树的深度计为m;
  • 递归计算右子树的深度计为n;
  • 如果m大于n,二叉树的深度为m+1,否则为n+1;
[算法描述]
int Depth(BiTree T)
{int m, n;if (T == NULL)return 0; //如果是空树,深度为0,递归结束else{m = Depth(T->lchild); //递归计算左子树的深度记为mn = Depth(T->rchild); //递归计算右子树的深度记为nif (m > n)return (m + 1); //二叉树的深度为m 与n的较大者加1elsereturn (n + 1);}
}

完整代码实现

//计算二叉树的深度
#include <iostream>
using namespace std;//二叉树的二叉链表存储表示
typedef struct BiNode
{char data;                      //结点数据域struct BiNode *lchild, *rchild; //左右孩子指针
} BiTNode, *BiTree;//建立二叉链表
void CreateBiTree(BiTree &T)
{//按先序次序输入二叉树中结点的值(一个字符),创建二叉链表表示的二叉树Tchar ch;cin >> ch;if (ch == '#')T = NULL; //递归结束,建空树else{T = new BiTNode;T->data = ch;            //生成根结点CreateBiTree(T->lchild); //递归创建左子树CreateBiTree(T->rchild); //递归创建右子树}                            //else
} //CreateBiTreeint Depth(BiTree T)
{int m, n;if (T == NULL)return 0; //如果是空树,深度为0,递归结束else{m = Depth(T->lchild); //递归计算左子树的深度记为mn = Depth(T->rchild); //递归计算右子树的深度记为nif (m > n)return (m + 1); //二叉树的深度为m 与n的较大者加1elsereturn (n + 1);}
}int main()
{BiTree tree;cout << "请输入建立二叉链表的序列:\n";CreateBiTree(tree);cout << "数的深度为:" << Depth(tree) << endl;
}

二叉树:
在这里插入图片描述
运行结果:
在这里插入图片描述


http://chatgpt.dhexx.cn/article/nW3xBaTg.shtml

相关文章

CreateDialog

使用对话框模版资源创建一个非模态对话框。 CreateDialog调用 CreateDialogParam 函数。 调用语序&#xff1a; HWND CreateDialog(HINSTANCE hInstance,LPCTSTR lpTemplate,HWND hWndParent,DLGPROC lpDialogFunc); 参数 hInstance类型&#xff1a;HINSTANCE 对话框模版…

android 使用showDialog调用相应的对话框

在Activity下调用此函数 showDialog(10); 然后重写以下函数 protected Dialog onCreateDialog(int id) {// TODO Auto-generated method stubswitch(id){case 10:return new AlertDialog.Builder(Activity13.this).setTitle(getString(R.string.title)).setMessage(getString(…

Show()跟ShowDialog()的区别

Show和ShowDialog有什么不同呢&#xff0c;什么时候用Show&#xff0c;什么时候用ShowDialog呢&#xff1f;相信看完这篇博客&#xff0c;你会有一个比较明确的答案。 说到show跟ShowDialog的区别很多人会想到的是&#xff0c;他们一个是非模态一个是模态&#xff0c;模态窗体就…

WPF Tips: Window.ShowDialog()方法:Cannot set Visibility or call Show, ShowDialog, or WindowInteropHelp

关于Window.ShowDialog()方法&#xff0c;有一个常见的容易犯的错误。下面给出这个错误的例子&#xff1a; DemoA&#xff1a;错误的例子 1. 在WPF项目中&#xff0c;创建一个Windows&#xff1a;DialogWindow DialogWindow.xaml <Window x:Class"DemoA.DialogWindow&…

showdialog

在C#中窗口的显示有两种方式&#xff1a;模态显示&#xff08;showdialog&#xff09;和非模态显示&#xff08;show&#xff09;。 区别&#xff1a; 模态与非模态窗体的主要区别是窗体显示的时候是否可以操作其他窗体。模态窗体不允许操作其他窗体&#xff0c;非模态窗体可以…

Flutter dialog (1) - showDialog的讲解

在应用开发中,或多或少都会遇到需要弹框的问题, 比如:需要用户确认,需要输入一些信息等等的问题,这就要用到 dialog 相关的概念了 而在 flutter 中,所有可以看见的都是 Widget,dialog 也不例外 不过和 android 或 iOS 中不同的一点是,Flutter 中 dialog 不是一个单独的类,而是…

C# 按Button弹出新的窗体 Show()方法 和 ShowDialog()方法

在做串口通信程序时&#xff0c;有个想法&#xff0c;当点击串口设置按钮时&#xff0c;弹出一个新的窗口&#xff0c;可以设置串口相关信息&#xff0c;如何实现这一操作呢&#xff1f; 1 新建一个项目&#xff0c;窗体为form1 2 选择项目名称&#xff0c;单击右键&#xff0…

C# 弹出窗口 show()和showdialog()

目录 一、构建工程和界面介绍二 、添加代码三、验证效果和小结 我们在构建C# Form窗口的时候经常需要到弹出新的窗口&#xff0c;那么接着就会如何弹出窗口的疑问。这里介绍最常见的两种弹窗方法show()和showdialog()。我在VS2019中构建一个简单的工程来讲解让他们之间的区别。…

fwrite函数,fread函数和fgets函数详解以及使用方法

c/c文件处理函数 1. fgets函数 函数原型 char *fgets(char *s, int size, FILE *stream);参数解释&#xff1a; s 代表要保存到的内存空间的首地址&#xff0c;可以是字符数组名&#xff0c;也可以是指向字符数组的字符指针变量名。size 代表的是读取字符串的长度。stream …

c语言 fread读指定字节,fread函数 c语言中fread函数怎么用

fread是一个函数,它从文件流中读数据,最多读取count个项,每个项size个字节,如果调用成功返回实际读取到的项个数(小于或等于count),如果不成功或读到文件末尾返回0。返回真实读取的项数,若大于count则意味着产生了错误。另外,产生错误后,文件位置指示器是无法确定的。若…

c语言fread函数,C语言“fread”函数的用法?

C语言“fread”函数的用法? C语言“fread”函数的用法为“size_tf read(void *buffer,size_t size,size_t count,FILE *stream)”,其作用是从一个文件流中读数据,读取count个元素,每个元素size字节。 示例1#include #include #include int main() {FILE *stream; char m…

【C 语言】文件操作 ( fread 函数 )

文章目录 一、fread 函数二、缓冲区受限的情况 ( 循环读取文件 | feof 函数判定文件读取完毕 )三、处理乱码问题四、记录读取的字节个数五、读取到 0 字节的情况六、读取完毕的情况七、读取文本文件 " " 与 读取二进制文件 " " 区别 二进制文件读写两个重…

Scala对象 转Json字符串

2019独角兽企业重金招聘Python工程师标准>>> import org.json4s.{Formats, NoTypeHints} import org.json4s.jackson.Serialization import org.json4s.jackson.Serialization.writeobject Json4sDemo {// 需要添加隐式转换implicit val formats: AnyRef with Forma…

【系统学习SpringBoot】SpringBoot 对象转JSON输出

SpringBoot输出JSON 以往使用SpringMVC中开发时&#xff0c;对象转JSON需要配置很多东西 【1】添加FastJson/jackjson等第三方jar 【2】在配置文件中配置Controller扫描 【3】给方法添加ResponseBody 配置FastJson还需要给配置文件中添加(很麻烦( ▼-▼ )) <mvc:annot…

【Java 笔记】使用Fastjson2时,对象转json首字母大小写问题

开发环境&#xff1a; Spring cloud Fastjson2 一、JSON 转 Object 推送第三方数据时&#xff0c;对方http接口消息体为json&#xff0c;但是字段首字母大写 我们需要接收JSON 转 Object [ { "ItemCode": "WIND_SPEED", "ItemValue": "2.1…

js 数组、对象转json 以及json转 数组、对象

1、JS对象转JSON 方式&#xff1a;JSON.stringify(obj) var json {"name":"iphone","price":666}; //创建对象&#xff1b; var jsonStr JSON.stringify(json); //转为JSON字符串 console.log(jsonStr);2、JS数组转JSON //数组转json…

对象转JSON首字母大写

最近在做一个第三方接口&#xff0c;接口给的数据类型如下 请求报文如下 {"A0144":"12141256","AB6AM":"中国银行支行","STATUS":1} 一般按照对象转JSON会使首字母小写&#xff0c;与接口文档不相符&#xff0c;因此需要…

Object对象转实体对象,java对象转json

Object对象转实体对象 在后台发起HTTP请求的时候&#xff0c;响应体传回的一般是Object或者JSON字符串。 方法一 要将Object对象转换成实体类对象可以先使用com.alibaba.fastjson.JSONObject类的toJSONString方法将Object对象转换成JSON字符串&#xff0c;然后再调用JSONObj…

对象 和 json 互转 四种方式 json-lib、Gson、FastJson、Jackson

文章目录 一、 json-lib二、 Google的Gson1.简介2. 配置步骤1. MAVEN 依赖引入2. gsonUtil 工具类3. 排除不要序列化的熟悉注解类 Exclude 三. 阿里巴巴的FastJson1.简介2.配置步骤1.引入maven2. 配置 CustomFastjsonConfig3. 测试 4. 开源的Jackson简介&#xff1a;Jackson配置…

大数据Java学哪个好,哪个更有发展前景?

文章来源&#xff1a;加米谷大数据 在IT职业技能培训当中&#xff0c;Java开发可以说是非常经典的一个方向&#xff0c;行业当中对于Java开发人才&#xff0c;早年可以是存在长期持续性的需求。而大数据&#xff0c;作为近年来的新兴技术热点&#xff0c;也同样备受关注。因此很…