笔试面试题——二叉树进阶(二)

在这里插入图片描述


📘北尘_:个人主页

🌎个人专栏:《Linux操作系统》《经典算法试题 》《C++》 《数据结构与算法》

☀️走在路上,不忘来时的初心

文章目录

  • 一、二叉搜索树与双向链表
    • 1、题目讲解
    • 2、思路讲解+递归展开图
    • 3、代码实现
  • 二、从前序遍历和中序遍历中构建二叉树
    • 1、题目讲解
    • 2、思路讲解+递归展开图
    • 3、代码实现
  • 三、从中序遍历和后序遍历中构建二叉树
    • 1、题目讲解
    • 2、思路讲解
    • 3、代码实现



一、二叉搜索树与双向链表

1、题目讲解

在这里插入图片描述
在这里插入图片描述

2、思路讲解+递归展开图

在这里插入图片描述

在这里插入图片描述

3、代码实现

class Solution {
public:void _Convert(TreeNode* cur,TreeNode*& prev){if(cur==nullptr)return;_Convert(cur->left,prev);cur->left=prev;if(prev){prev->right=cur;}prev=cur;_Convert(cur->right,prev);}TreeNode* Convert(TreeNode* pRootOfTree) {TreeNode* cur=pRootOfTree,*prev=nullptr;_Convert(cur,prev);TreeNode* root=pRootOfTree;while(root && root->left){root=root->left;}return root;   }
};

二、从前序遍历和中序遍历中构建二叉树

1、题目讲解

在这里插入图片描述
在这里插入图片描述

2、思路讲解+递归展开图

在这里插入图片描述

在这里插入图片描述

3、代码实现

class Solution {
public:TreeNode* _buildTree(vector<int>& preorder, vector<int>& inorder,int& i,int begin,int end){if(begin>end)return nullptr;int rooti=begin;while(rooti<=end){if(preorder[i]==inorder[rooti])break;rooti++;}TreeNode* root=new TreeNode(preorder[i++]);root->left=_buildTree(preorder,inorder,i,begin,rooti-1);root->right=_buildTree(preorder,inorder,i,rooti+1,end);return root;}TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {int i=0;TreeNode* root=_buildTree(preorder,inorder,i,0,inorder.size()-1);return root;}
};

三、从中序遍历和后序遍历中构建二叉树

1、题目讲解

在这里插入图片描述
在这里插入图片描述

2、思路讲解

在这里插入图片描述

3、代码实现

class Solution {
public:TreeNode* _buildTree(vector<int>& inorder, vector<int>& postorder,int& i,int begin,int end){if(begin>end)return nullptr;int rooti=begin;while(begin<=end){if(postorder[i]==inorder[rooti])break;rooti++;}TreeNode* root=new TreeNode(postorder[i--]);root->right=_buildTree(inorder,postorder,i,rooti+1,end);root->left=_buildTree(inorder,postorder,i,begin,rooti-1);return root;}TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {int i=postorder.size()-1;TreeNode* root=_buildTree(inorder,postorder,i,0,inorder.size()-1);return root;}
};

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

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

相关文章

安装向量数据库milvus可视化工具attu

使用docker安装的命令和简单就一个命令&#xff1a; docker run -p 8000:3000 -e MILVUS_URL{milvus server IP}:19530 zilliz/attu:v2.3.5sunyuhuasunyuhua-HKF-WXX:~/dockercom/milvus$ docker run -p 8000:3000 -e MILVUS_URL127.0.0.1:19530 zilliz/attu:latest yarn run…

pulsed-phase thermography (PPT)汉语意思是什么,用来干什么的?

问题描述&#xff1a;pulsed-phase thermography (PPT)汉语意思是什么&#xff0c;用来干什么的&#xff1f; 问题解答&#xff1a; "Pulsed-Phase Thermography"&#xff08;PPT&#xff09;翻译为中文是脉冲相位热成像。这是一种热成像技术&#xff0c;常用于材料…

Xcode查看APP文件目录

一、连接真机到MAC电脑上 二、打开Devices 点击window -> Devices and Simulatores 三、选中设备、选择app 四、选择下载内容 五、查看文件内容 得到的文件 右键显示包内容&#xff0c;获得APP内数据 六、分发证书无法下载 使用分发的证书无法下载文件内容&#xf…

(delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)

Object Pascal 学习笔记&#xff0c;Delphi 11 编程语言的完整介绍 作者: Marco Cantu 笔记&#xff1a;豆豆爸 2.5 日期和时间 ​ 早期版本的Pascal 语言中&#xff0c;没有原生的日期和时间类型&#xff0c;但是 Object Pascal 引入了一种原生的日期和时间类型&#xff0c;…

k8s的包管理工具helm

Helm是什么? 之前的这篇文章介绍了一开始接触k8s的时候接触到的几个命令工具 kubectl&kubelet&rancher&helm&kubeadm这几个命令行工具是什么关系&#xff1f;-CSDN博客 Helm 是一个用于管理和部署 Kubernetes 应用程序的包管理工具。它允许用户定义、安装和…

联邦推荐系统相关论文创新点总结

FD-GATDR: A Federated-Decentralized-Learning Graph Attention Network for Doctor Recommendation Using EHR 本文的主要内容是基于电子健康记录&#xff08;EHR&#xff09;构建了一个医生推荐系统。该系统通过分析患者的EHR历史&#xff0c;提供个性化的医生推荐&#xf…

美丽田园三大类服务相互协同促进协同增长 美丽田园美容已ipo上市

美丽田园三大类服务相互协同促进协同增长 美丽田园美容已ipo上市 从事健康与美丽管理服务的美丽田园医疗健康产业有限公司以多层次、环环紧扣的良性循环&#xff0c;将带动美与健康行业回归稳健的高速发展态势。美丽田园覆盖的业务领域横跨生活美容、医疗美容及医疗健康三大业…

说一下事件代理

事件代理&#xff08;Event Delegation&#xff09;是一种在开发中优化事件处理的技术&#xff0c;它利用事件冒泡的原理&#xff0c;将事件处理程序绑定在父元素上&#xff0c;通过判断事件的目标来执行相应的操作。这种方式可以减少事件处理程序的数量&#xff0c;提高性能&a…

ansible的file模块详解

四、ansible常用模块 1.file模块 file模块主要用于远程主机上的文件的操作,file模块包含下面选项: path : 必选项,定义目录/目录的路径 state : file : 查看文件状态,默认选项,若文件不存在,也不会被创建,会报错文件不存在, …

阿里云优惠券领取入口、使用方法和限制条件,2024最新

阿里云优惠代金券领取入口&#xff0c;阿里云服务器优惠代金券、域名代金券&#xff0c;在领券中心可以领取当前最新可用的满减代金券&#xff0c;阿里云百科aliyunbaike.com分享阿里云服务器代金券、领券中心、域名代金券领取、代金券查询及使用方法&#xff1a; 阿里云优惠券…

Charles将证书安装到系统的方法(adb)

基本情况参考此帖&#xff1a;Charles 安卓抓包 unknown 和证书无效的解决方案&#xff08;无需改代码&#xff09;_client ssl handshake failed: an unknown issue occu-CSDN博客 此解决方案仅适用于已root设备默认已经在电脑上安装并配置了Charles&#xff0c;安卓手机也下载…

如何在Mac上安装PHP环境

前置环境&#xff1a;HomeBrew # Homebrew 是 Mac 上最好的包管理器之一&#xff0c;可以用于安装各种开源软件。从 Terminal&#xff08;终端&#xff09;执行以下命令安装 Homebrew&#xff1a; /usr/bin/ruby -e $(curl -fsSL https://raw.githubusercontent.com/Homebrew/i…

全流程机器视觉工程开发(一)环境准备,paddledetection和labelme

前言 我现在在准备做一个全流程的机器视觉的工程&#xff0c;之前做了很多理论相关的工作。大概理解了机器视觉的原理&#xff0c;然后大概了解了一下&#xff0c;我发现现在的库其实已经很发展了&#xff0c;完全不需要用到非常多的理论&#xff0c;只需要知道开发过程就可以…

H5公众号调用v2jsapi使用微信支付-PHP后端

前端示例代码 <!DOCTYPE html> <html> <head><meta charset"UTF-8" /><title>微信支付</title><script src"https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script><script src"https://s.…

Flutter 滚动布局:sliver模型

一、滚动布局 Flutter中可滚动布局基本都来自Sliver模型&#xff0c;原理和安卓传统UI的ListView、RecyclerView类似&#xff0c;滚动布局里面的每个子组件的样式往往是相同的&#xff0c;由于组件占用内存较大&#xff0c;所以在内存上我们可以缓存有限个组件&#xff0c;滚动…

软考系分之计算机网络规划设计、综合布线、RAID和网络存储等

文章目录 1、概要2、网络的三层模型3、综合布线系统4、廉价磁盘冗余阵列&#xff08;RAID&#xff09;5、网络存储6、总结 1、概要 本篇重点介绍计算机网络中的网络规划设计、综合布线、RAID和网络存储。 2、网络的三层模型 三层模型分为核心层、汇聚层和接入层&#xff0c;接…

【JavaEE】网络原理

网络原理 1. 网络发展史 1.1 独立模式 每个计算机都相互独立&#xff0c;各个终端无法实现相互通信&#xff0c;当想要运行其他数据时&#xff0c;只能进行更换电脑。 1.2 网络互连 通过网络将多台设备连接在一起&#xff0c;完成数据共享。 1&#xff09;局域网LAN 即Lo…

【C++修行之道】竞赛常用库函数(sort,min和max函数,min_element和max_element、nth_element)

目录 一、sort 1.1sort简介 语法 参数 功能 适用容器 1.2sort的用法 1.3自定义比较函数 示例 1265蓝桥题 —— 排序 二、min和max函数 三、min_element和max_element 497蓝桥题 —— 成绩分析 四、nth_element 一、sort 1.1sort简介 sort函数包含在头文件<a…

Vue3组件库开发 之Button(2) 未完待续

Vue3组件库开发 之Button(1) 中新建项目&#xff0c;但未安装成功ESLINT 安装ESLINT npm install eslint vite-plugin-eslint --save-dev 安装eslint后&#xff0c;组件文件出现错误提示 添加第三方macros &#xff0c;虽然不是官网但很多开发者都是vue3开发人员 安装macros…

C++大学教程(第九版)6.29素数

题目 (素数)素数是只能被1和自已整除的整数。例如,235和7是素数而468和9不是素数 a)编写一个函数&#xff0c;确定一个数是否是素数。 b)在程序中使用这个函数&#xff0c;该程序确定和打印2 ~10000之间的所有素数。在确信已找到所有的素数之前&#xff0c;实际需测试这些数中…