当前位置: 首页 > news >正文

企业网站html模板下载织梦数据库可以用到wordpress

企业网站html模板下载,织梦数据库可以用到wordpress,律师事务所网站 备案,自己电脑做的网站如何映射到公网🌱 二叉树构造题精讲:前序 中序建树 & 有序数组构造 BST 本文围绕二叉树的两类构造类题目展开解析: 从前序与中序遍历序列构造二叉树 将有序数组转换为二叉搜索树 我们将从「已知遍历构造树」和「平衡构造 BST」两个角度,拆…

🌱 二叉树构造题精讲:前序 + 中序建树 & 有序数组构造 BST

本文围绕二叉树的两类构造类题目展开解析:

    1. 从前序与中序遍历序列构造二叉树
    1. 将有序数组转换为二叉搜索树

我们将从「已知遍历构造树」和「平衡构造 BST」两个角度,拆解树结构的构建逻辑,彻底吃透构造题型。


📌 题目一:105. 从前序与中序遍历序列构造二叉树

📝 题目描述

给定两棵树的遍历序列:

  • preorder(前序遍历):根 -> 左 -> 右
  • inorder(中序遍历):左 -> 根 -> 右

请根据这两种遍历构造原始二叉树。


🔍 解题思路

核心思路:

  1. 前序遍历的第一个元素一定是根节点;
  2. 在中序遍历中找到这个根节点的位置,可以确定左右子树的元素范围;
  3. 递归构造左右子树。

✅ 解法:递归构造

func buildTree(preorder []int, inorder []int) *TreeNode {inMap := map[int]int{}for i, val := range inorder {inMap[val] = i}var build func(pl, pr, il, ir int) *TreeNodebuild = func(pl, pr, il, ir int) *TreeNode {if pl > pr || il > ir {return nil}rootVal := preorder[pl]root := &TreeNode{Val: rootVal}idx := inMap[rootVal]leftSize := idx - ilroot.Left = build(pl+1, pl+leftSize, il, idx-1)root.Right = build(pl+leftSize+1, pr, idx+1, ir)return root}return build(0, len(preorder)-1, 0, len(inorder)-1)
}

📘 思路详解

  • 使用 inMap 来快速定位中序中某个值的位置,避免每次线性搜索;
  • 用索引控制遍历范围,不要切片传参,会影响性能
  • 每次递归缩小当前处理的 preorder 和 inorder 区间。

⚠️ 注意事项:

  • preorder[pl] 是当前子树的根节点;
  • 左子树的大小为 idx - il
  • 左右子树递归时注意索引边界不要写错。

📌 题目二:108. 将有序数组转换为二叉搜索树

📝 题目描述

给你一个升序排序的整数数组,请你将其转化为一棵高度平衡的二叉搜索树(BST)


🔍 解题思路

关键点:

  • 数组有序 → 可用中间元素构建根节点;
  • 左边递归为左子树,右边递归为右子树;
  • 中间元素选择策略:可以取中间偏左或偏右均可。

✅ 解法:递归 + 中点分割

func sortedArrayToBST(nums []int) *TreeNode {var build func(left, right int) *TreeNodebuild = func(left, right int) *TreeNode {if left > right {return nil}mid := (left + right) / 2root := &TreeNode{Val: nums[mid]}root.Left = build(left, mid-1)root.Right = build(mid+1, right)return root}return build(0, len(nums)-1)
}

💭 思维补充

  • 二叉搜索树要求:左 < 根 < 右;
  • 高度平衡树要求:每个节点左右子树高度差不超过 1;
  • 因此「中间作为根」是构造平衡 BST 的最优策略。

🧠 总结 & 对比

题目类型输入输出核心操作
105构造普通二叉树前序 + 中序遍历树结构递归 + 分治(索引控制)
108构造平衡 BST有序数组BST 树结构递归 + 二分中点

🎯 通用构造套路小结:

  1. 明确根节点从何而来(前序 or 中点);
  2. 找到左右子树的边界
  3. 索引控制子问题的范围
  4. 构建节点,递归处理左右子树;
  5. 特别注意边界条件与 base case

✨ 进阶思考

  • 如果输入是 中序 + 后序,你还能反推出树吗?
  • 如果输入是 BST + 任意遍历,你能判断树结构吗?

这些问题都是构造类题目的常见变体,建议从这两题出发逐步拓展思维路径。


下一篇将带你探索搜索树相关的问题,从验证 BST 到查找第 K 小元素,一起掌握搜索树的价值!

如有帮助,欢迎点赞收藏,更多结构题内容持续更新中 🧠💡


http://www.dtcms.com/a/447404.html

相关文章:

  • 怎么知道网站的ftp兽装定制工作室
  • Python 代码执行方案学习总结
  • 佛山公司网站推广外包服务最新电大网站开发维护
  • 网站关键字统计浙江省建设诚信系统网站
  • 山东企业建站系统费用网站的网页
  • 做网站最简单wordpress为什么慢
  • 做设计的兼职网站有哪些手机装修设计软件
  • 安徽省建设工程安全 协会网站中企动力网站建设精品案例
  • 如何弄自己的公司网站关于网站建设申请报告
  • 无锡市新吴区建设环保局网站wordpress query_posts
  • 网站建设要备案吗wordpress国产主题
  • Robot Framework7.0 之Listener v3 深度实战
  • 宁波专业的网站建设摄影作品展示网站flash全站源码
  • 亿网行网站建设凤岗镇网站建设
  • 展厅设计素材网站理发店会员管理软件免费
  • 网站内页标题wordpress 4.0 4.6
  • 高端网站欣赏支付宝小程序开发费用
  • 上海网站开发与设计湘潭网站建设 技精磐石网络
  • 青岛模板化网站建设网站链接推广
  • dw自己做网站上海服装外贸公司排名
  • 照明灯具类企业网站网站运营建设
  • 西宁网站建设君博正规wordpress建小说站收费
  • 网站开发时会遇到哪些问题贵州 跨境电商网站建设
  • LangChain4j 新版本的核心升级点 —— @AiService 声明式接口
  • NX511NX512美光固态闪存NX516NX517
  • 重庆五号线金建站wordpress ip无法设置
  • 基于 seajs 的高性能网站开发和优化实践_王保平(淘宝)建个微商城网站
  • 继续打卡hot100
  • 做封面下载网站个人 做自媒体 建网站
  • 旧电脑做网站服务器免费拓客软件