Leedcode1-求树的最小高度

#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
//5种情况:空树;没有子树;只有左/右子树;有俩子树;
struct BinaryNode {BinaryNode *left;BinaryNode *right;int data;
};
struct BinaryTree {BinaryNode *head;
};
//后序遍历递归
//如果左右子树都存在,则取其最小
//如果左右子树没有其中一个,-->说明此根下有叶子结点。所以取其最大
int getDepth(BinaryNode *node)
{if (node == NULL)return 0;int left_depth = getDepth(node->left);int right_depth = getDepth(node->right);if (left_depth && right_depth)  //左子树和右子树都存在return min(left_depth, right_depth) + 1;elsereturn max(left_depth, right_depth) + 1;
}
//层次遍历,使用队列完成
int getDepth2(BinaryNode *root)
{if (root == NULL)return 0;queue<BinaryNode *>q;q.push(root);int depth = 0;while (!q.empty())   //q存放当前层结点,qt存放下一层结点{queue<BinaryNode *>qt;depth++;while (!q.empty()){BinaryNode *temp = q.front();cout << temp->data << endl;q.pop();if (!temp->left && !temp->right){return depth;}if (temp->left)qt.push(temp->left);  if (temp->right)qt.push(temp->right);}q = qt;}return depth;
}int main()
{/*7/   \8     9/       \4         10/ \2   5	*/BinaryTree btree;BinaryNode node1 = { NULL,NULL,7};BinaryNode node2 = { NULL,NULL,9 };BinaryNode node3 = { NULL,NULL,8 };BinaryNode node4 = { NULL,NULL,4 };BinaryNode node5 = { NULL,NULL,2 };BinaryNode node6 = { NULL,NULL,5 };BinaryNode node7 = { NULL,NULL,10 };btree.head = &(node1);node1.left = &(node3);node1.right = &(node2);node2.right = &(node7);node3.left = &(node4);node4.left = &(node5);node4.right = &(node6);int height = getDepth2(&(node1));cout << height << endl;}

运行结果:

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

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

相关文章

C++/C中 sizeof(指针)和sizeof(数组名)的区别

1、sizeof(array)/sizeof(int)的含义 array是个数组 sizeof (array)就是这个数组所占的内存总量&#xff08;字节数), sizeof(int)就是单个所占的内存. 所以呢&#xff0c; sizeof (array&#xff09; / sizeof (int)就是array数组的元素的个数. 2、 sizeof(指针)和sizeof(数…

数据结构-栈3-栈的应用-就近匹配

#define _CRT_SECURE_NO_WARNINGS #include"LinkList.c" #include<stdio.h> #include<stdlib.h> #include<string.h> //括号有没有匹配。哪个不匹配就指向哪个。。 //扫描字符串 //1、非括号字符忽略 //2、若遇到左括号&#xff0c;则入栈 //3、若…

使用 Jekyll 构建你的网站 - 初入门

文章目录 一、Jekyll介绍二、Jekyll安装和启动2.1 配置Ruby环境1&#xff09;Windows2&#xff09;macOS 2.2 安装 Jekyll2.3 构建Jekyll项目2.4 启动 Jekyll 服务 三、Jekyll常用命令四、目录结构4.1 主要目录4.2 其他的约定目录 五、使用GitLink构建Jekyll博客5.1 生成Jekyll…

调用ice服务器_Nodejs+socket.io搭建WebRTC信令服务器

前言我们在学习 WebRTC 时&#xff0c;首先要把实验环境搭建好&#xff0c;这样我们就可以在上面做各种实验了。对于 WebRTC 来说&#xff0c;它有一整套规范&#xff0c;如使它使用的接口、使用SDP进行媒体协商、通过ICE收集地址并进行连通性检测等等。除此之外&#xff0c;We…

数据结构-栈4-栈的应用-中缀转后缀

//碰到数字直接输出 //运算符号&#xff1a;与栈顶符号进行优先级比较//若栈顶符号优先级比运算符号优先级低&#xff1a;此符号进栈&#xff08;括号优先级最低&#xff09;//若栈顶符号优先级不低于运算符号优先级&#xff1a;将栈顶符号一直弹出并输出&#xff0c;直到不满足…

四二拍用音符怎么表示_每个音符都是赞美歌拍子分析 0基础识简谱每日必看

点击上方蓝字 关注我们拍子状态分析是为了帮助0基础家人识谱用的&#xff0c;一首诗歌拿在手上只所以看起来复杂&#xff0c;是这些节奏让人眼花缭乱&#xff0c;其实真正理解了其中的含义&#xff0c;就会感觉豁然开朗&#xff0c;此种方法是掌握节奏型的捷径&#xff0c;不需…

数据结构-栈5-栈的应用-后缀转中缀

#define _CRT_SECURE_NO_WARNINGS #include"LinkList.c" #include<stdio.h> #include<stdlib.h> #include<string.h>//遇到数字压栈 //遇到符号&#xff0c;取出栈的第一个元素为右操作符&#xff0c;第二个元素为左操作符。计算完毕后压栈typedef…

midl会议_2020年医学图像处理领域值得关注的期刊和会议

期刊注册IEEE Xplore账号&#xff0c;将该期刊的更新添加提醒&#xff0c;每有新文章出来就会推送到邮箱。注册账号后也可以订阅文章更新会议MICCAI: International Conference on Medical Image Computing and Computer Assisted Intervention (每年9-10月)2.IPMI: Informatio…

数据结构排序1-冒泡,选择,插入排序

冒泡排序 &#xff0c;选择排序&#xff0c;插入排序 #include<iostream> #include<stdio.h> #include<stdlib.h> #include<random> #include<time.h> #include<sys/timeb.h> using namespace std; #define MAX 10long getSystemTime() {…

emacs shell插件_Windows 下 Emacs 中的 zsh shell 使用方法

导读运行跨平台 shell(例如 Bash 或 zsh)的最大优势在于你能在多平台上使用同样的语法和脚本。在 Windows 上设置(替换)shell 挺麻烦的&#xff0c;但所获得的回报远远超出这小小的付出。MSYS2 子系统允许你在 Windows 上运行 Bash 或 zsh 之类的 shell。使用 MSYS2 很重要的一…

数据结构排序2-希尔,快速,归并排序

希尔排序 希尔排序是对插入排序的改进。增加了分组 分组插入排序 降低元素个数&#xff0c;然后对每组分别进行插入排序 利用分组增量遍历&#xff0c;因为最后必须全部排序一次&#xff0c;然后分别对每组插入排序。把每组的第一个数作为有序序列&#xff0c; 要比较的第一个…

数据结构排序3-堆排序

堆排序 思想&#xff1a;假设数组放入完全二叉树中&#xff0c; 1、初始化堆&#xff1a;调节父结点与子结点的大小。让所有的子结点都小于父结点。 2、将完全二叉树中的叶子结点和根结点进行互换后&#xff0c;继续调整堆。直至结束 #include<iostream> #include<…

删除代码中的空行

打开替换&#xff08;ctrlh?&#xff09;&#xff0c;使用正则表达式&#xff1a; ^\s*\n ^ 匹配输入字符串的开始位置\s 表示匹配任何空白字符&#xff0c;包括制表符&#xff0c;空格&#xff0c;换页符等等* 表示匹配多次\n 表示匹配换行符 替换为&#xff1a; <…

数据结构-哈希与映射

二叉树映射map #include<iostream> #include<map> //映射&#xff08;也叫字典&#xff09;&#xff0c;二叉树映射&#xff0c;不是哈希映射 using namespace std; int main() {cout << "二叉树&#xff08;红黑树&#xff09;" << endl;…

python3.6.5+cuda9+cudnn7.1+win10+tensorflow-gpu1.9.0下载配置

一、首先明确cuda和cudnn对应版本 tensorflow版本与cuda cuDNN版本对应使用 tensorflow-gpu v1.9.0 | cuda9.0 | cuDNN7.1.4可行 | 备注&#xff1a;7.0.4/ 7.0.5/ 7.1.2不明确 tensorflow-gpu v1.8.0 | cuda9.0 | cuDNN 不明确 | 备注&#xff1a;7.0.4/ 7.0.5/ 7.1.2/…

python配置opencv镜像安装

直接利用pip install opencv-python 安装即可&#xff0c;但是会出现time out情况&#xff0c;所以采用镜像安装 pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple 打开pycharm验证&#xff1a;输入import cv2 as cv 不报错&#xff0c;即安装成功

win10+vs2015+opencv3配置

一、下载opencv3和vs2015&#xff0c;并解压与安装 二、配置opencv环境变量 右键“我的电脑---属性---高级系统设置---环境变量&#xff0c;在下方“环境变量”里找到“Path”&#xff0c;进入编辑&#xff1b; 添加”…opencv\build\x64\vc14\bin”&#xff0c;如…

数据结构-图及其遍历

图-邻接矩阵 #include<iostream> #define MAX_VERTS 20 using namespace std; //邻接矩阵 浪费空间class Vertex { //顶点 public:Vertex(char lab) { Label lab; } private:char Label; };class Graph { //图 public:Graph();~Graph();void addVertex(char lab);voi…

ios http长连接_Nginx篇05——http长连接和keeplive

nginx中http模块使用http长连接的相关配置(主要是keepalive指令)和http长连接的原理解释。1、http长连接1.1 预备知识连接管理是一个 HTTP 的关键话题&#xff1a;打开和保持连接在很大程度上影响着网站和 Web 应用程序的性能。在 HTTP/1.x 里有多种模型&#xff1a;短连接, 长…

php 目录555 权限_CMS网站安全权限划分设置教程

DiYunCMS(帝云CMS)-免费开源可商用的PHP万能建站程序CMS网站安全权限划分设置教程网站安全是网站搭建运营过程中非常重要的一部分&#xff0c;DiYunCMS非常注重安全&#xff0c;开发了强大的安全功能。本文给大家介绍下DiYunCMS网站的安全设置方法。首先需要安装【系统安全】插…