二叉树进阶leetcode

606. 根据二叉树创建字符串

要点:前序遍历,当左子树为空时,右结点有数字时要给左边加括号

class Solution {
public:string tree2str(TreeNode* root) {string s;//创建一个字符串if(root==nullptr){return s;}s+=to_string(root->val);//保存当前结点,转换为字符串if(root->left)//左子树不为空,继续往左子树走{s+="(";s+=tree2str(root->left);s+=")";}else if(root->right)//当左子树为空右子树不为空{s+="()";}if(root->right)//遍历右边{s+="(";s+=tree2str(root->right);s+=")";}//不需要加()return s;}
};

102. 二叉树的层序遍历

层次遍历想到用队列将一层一层的数据存入在拿出来

class Solution {
public:vector<vector<int>> levelOrder(TreeNode* root) {vector<vector<int>> vv;queue<TreeNode*> q;if(root){q.push(root);//存入第一个结点}while(!q.empty())//判空{vector<int> v;int lenght=q.size();for(size_t i = 0;i<lenght;i++)//用一个值去控制输出的层次{TreeNode* front = q.front();//将存入的数提取v.push_back(front->val);//给一维数组赋值q.pop();//弹出if(front->left)//当有左值存入q.push(front->left);if(front->right)//当有右值存入q.push(front->right);}vv.push_back(v);//将该一维数组存入,二维数组中}return vv;}
};

107. 二叉树的层序遍历 II

和上一道题相反,只需要将结果反转最后的二维数组就可以了reverse(开始的迭代器和结束的迭代器)

class Solution {
public:vector<vector<int>> levelOrderBottom(TreeNode* root){vector<vector<int>> vv;queue<TreeNode*> q;if(root){q.push(root);//存入第一个结点}while(!q.empty())//判空{vector<int> v;int lenght=q.size();for(size_t i = 0;i<lenght;i++)//用一个值去控制输出的层次{TreeNode* front = q.front();//将存入的数提取v.push_back(front->val);//给一维数组赋值q.pop();//弹出if(front->left)//当有左值存入q.push(front->left);if(front->right)//当有右值存入q.push(front->right);}vv.push_back(v);//将该一维数组存入,二维数组中}reverse(vv.begin(),vv.end());return vv;}
};

236. 二叉树的最近公共祖先

分析:这里是二叉搜索树只要知道左边和右边中间的就是公共祖先

class Solution {
public:bool Find(TreeNode* root, TreeNode* p){if(root==nullptr)return false;return root==p||Find(root->left,p)||Find(root->right,p);}TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {if(root==NULL)return NULL;if(root==p||root==q)return root;bool pInleft,pInright,qInleft,qInright;//这里代表pq在左边还是右边pInleft=Find(root->left,p);//这里也是递归,寻找p在那边pInright=!pInleft;qInleft=Find(root->left,q);//这里也是递归,寻找q在那边qInright=!qInleft;if((pInleft && qInright)||((qInleft && pInright))){return root;//当pq在左右两边时root就是祖先}if(qInleft && pInleft)//当pq都在左边{return lowestCommonAncestor(root->left,p,q);}if(qInright && pInright)//当pq都在右边{return lowestCommonAncestor(root->right,p,q);}return NULL;}
};

 

二叉搜索树与双向链表_牛客题霸_牛客网 (nowcoder.com)

class Solution {
public:void convertList(TreeNode* cur,TreeNode*& prev)//这里为什么要加&,递归到最后改变cur并没有改变所以要加&,才知道用同一个{if(cur==NULL){return;}convertList(cur->left,prev);cur->left=prev;if(prev)prev->right = cur;prev =cur;convertList(cur->right,prev);}TreeNode* Convert(TreeNode* pRootOfTree) {TreeNode* prev = NULL;convertList(pRootOfTree,prev);TreeNode* head = pRootOfTree;while(head && head->left){head=head->left;}return head;}
};

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

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

相关文章

网络、网络协议模型、UDP编程——计算机网络——day01

今天来到了网络编程&#xff0c;主要讲了网络、网络协议模型以及UDP编程 网络 网络主要是进行&#xff1a;数据传输和数据共享 网络协议模型 OSI协议模型应用层 实际发送的数据表示层 发送的数据是否加密会话层 是否建立会话连接传…

调研图基础模型(Graph Foundation Models)

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 图基础模型&#xff08;Graph Foundation Models&#xff0c;简称 GFMs&#xff09; 是一种经过预训练的图大模型&#xff0c;旨在处理不同领域的图数据和任务。让我们详细探讨一下这个概念。 Github …

详解openGauss客户端工具gsql的高级用法

前言&#xff1a; gsql是openGauss提供在命令行下运行的数据库连接工具&#xff0c;可以通过此工具连接服务器并对其进行操作和维护&#xff0c;除了具备操作数据库的基本功能&#xff0c;gsql还提供了若干高级特性&#xff0c;便于用户使用。 gsql的基本功能 连接数据库&…

https 加密解密过程是什么?

HTTPS 加密通信过程中&#xff0c;主要涉及到以下几个步骤&#xff1a; 握手阶段(handshake phase)&#xff1a; 客户端向服务器端发送一个加密通信请求&#xff0c;并提供自己的加密能力列表&#xff0c;以及一个随机生成的密钥&#xff08;Pre-master secret&#xff09;。…

uniapp让输入框保持聚焦状态,不会失去焦点

使用场景&#xff1a;当输入框还有发送按钮的时候&#xff0c;点击发送希望软键盘不消失&#xff0c;还可以继续输入&#xff0c;或者避免因输入图片标签造成的屏闪问题 多次尝试后发现一个很实用的方法&#xff0c;适用input输入框和editor输入框 解决办法&#xff1a;把cli…

AXI4总线解析

一、读地址 AWVALID和AWREADY同时为高时&#xff0c;在这个上升沿&#xff0c;图中黄线&#xff0c;将接下来的数据写入地址40000000中。 在

基于状态机的按键消抖实现

摸鱼记录 Day_14 !(^O^)y review 在day_13中以按键状态判断为例学习了状态分析基于状态机的按键消抖原理-CSDN博客 分析得到了下图&#xff1a; 今日任务&#xff1a;完成此过程 !(^O^)y 小梅哥对应视频&#xff1a; 15B 基于状态机的按键消抖Verilog实现_哔哩哔哩…

springboot/ssm图书管理系统Java图书馆图书统计系统web

springboot/ssm图书管理系统Java图书馆图书统计系统web 基于springboot(可改ssm)vue项目 开发语言&#xff1a;Java 框架&#xff1a;springboot/可改ssm vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&#xff1a;mysql …

DataFunSummit 2023:洞察现代数据栈技术的创新与发展(附大会核心PPT下载)

随着数字化浪潮的推进&#xff0c;数据已成为企业竞争的核心要素。为了应对日益增长的数据挑战&#xff0c;现代数据栈技术日益受到业界的关注。DataFunSummit 2023年现代数据栈技术峰会正是在这样的背景下应运而生&#xff0c;汇聚了全球数据领域的精英&#xff0c;共同探讨现…

Linux 文件操作命令

1 文件与目录操作 cd /home 进入 ‘/home’ 目录 cd .. 返回上一级目录cd ../.. 返回上两级目录cd - 返回上次所在目录cp file1 file2 将file1复制为file2cp -a dir1 dir2 复制一个目录 cp -a /tmp/dir1 . 复制一个…

nginx作为tcp的负载均衡

背景&#xff1a; 之前总以为nginx只能当静态资源web容器和web的负载均衡&#xff0c;现在才知道原来也可以当tcp的负载均衡。现在我们项目测试服就是一个nginx对应了2个测试服的负载均衡。配置如下: [rootlocalhost conf]# cat nginx.conf#user nobody; worker_processes …

【Qt】初识Qt

文章目录 一. 行业岗位介绍二. 什么是客户端&#xff1f;三. GUI 开发的各自技术方案四. 什么是框架&#xff1f;五. Qt 的发展史五. Qt 支持的系统六. Qt 的优点 一. 行业岗位介绍 二. 什么是客户端&#xff1f; 既然 Qt 是用来进行客户端开发的&#xff0c;那我们就要了解什…

如何保证ES和数据库的数据一致性?

在业务中&#xff0c;我们通常需要把数据库中的数据变更同步到ES中&#xff0c;那么如何保证数据库和ES的一致性呢&#xff1f;通常有以下几种做法&#xff1a; 双写 在代码中&#xff0c;对数据库和ES进行双写&#xff0c;并且先操作本地数据库&#xff0c;后操作ES&#xff…

Ubuntu20.04安装并配置vscode

Ubuntu20.04安装并配置vscode vscode安装miniconda安装创建虚拟python3.8环境pytorch和匹配的cuda安装 vscode安装 VSCode可以通过 Snapcraft 商店或者微软源仓库中的一个 deb 软件包来安装。 我们这里选用安装VSCode snap版&#xff0c;打开你的终端(CtrlAltT)并且运行下面的…

Apache Paimon 使用之 Creating Table

1.创建 Catalog 管理的 Tables 在Paimon Catalog中创建的Tables由Catalog管理&#xff0c;当Tables从Catalog中删除时&#xff0c;其table files也将被删除。 当使用Paimon Catalog&#xff0c;创建一个名为MyTable的managed table&#xff0c;在Catalog的default数据库中有五…

px2rem实现vue项目响应式布局

第一步 首先需要在项目中安装px2rem插件 npm install postcss-px2rem px2rem-loader --save 第二步 在项目src目录下新建util文件夹&#xff0c;在util文件夹下新建rem.js文件&#xff0c;内容如下&#xff1a; // rem等比适配配置文件 // 基准大小 const baseSize 14 //…

【机器学习300问】27、什么是决策树?

〇、两个预测任务 &#xff08;1&#xff09;任务一&#xff1a;银行预测偿还能力 当前&#xff0c;某银行正致力于发掘潜在的放贷用户。他们掌握了每位用户的三个关键特征&#xff1a;房产状况、婚姻状况以及年收入。此外&#xff0c;银行还拥有过往这些用户的债务偿还能力的…

刚工作菜鸟的小总结2

刚工作菜鸟的小总结2 1. using 关键字 using关键字可以用来定义一个类型的别名。例如 using SI_Error = int ,它的作用是将 SI_Error 这个名称与 int 类型进行关联,也就是说在后续代码中,可以使用 SI_Error 来代替 int 类型。如果程序中出现了 SI_Error ,我们就能清晰知道…

c/c++ 指针

参考链接:https://blog.csdn.net/soonfly/article/details/51131141 指针是一个特殊的变量&#xff0c;它里面存储的数值被解释成为内存里的一个地址。 一、指针定义 复杂指针定义涉及较多运算符&#xff0c;分析指针功能从变量名处起,根据运算符优先级结合,一步一步分析。首…

Linux系统——LVS-DR群集部署及拓展

目录 引言 1.LVS的工作模式及其工作过程 2.列举出LVS调度算法 3.LVS调度常见算法&#xff08;均衡策略&#xff09; 3.1固定调度算法:rr&#xff0c;wrr&#xff0c;dh&#xff0c;sh 3.2动态调度算法:wlc&#xff0c;lc&#xff0c;lblc 4.LVS三种工作模式区别 一、I…