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

长宁制作网站网站建设属于会计哪个科目

长宁制作网站,网站建设属于会计哪个科目,网站开发周期表,手机网站 ui问题链接 94.二叉树的中序遍历 问题描述 给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 示例 1: 输入:root [1,null,2,3] 输出:[1,3,2] 示例 2: 输入:root [] 输出:[] 示例 3&am…

问题链接

94.二叉树的中序遍历

问题描述

给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。

示例 1:
在这里插入图片描述

输入:root = [1,null,2,3]
输出:[1,3,2]

示例 2:

输入:root = []
输出:[]

示例 3:

输入:root = [1]
输出:[1]

提示

  • 树中节点数目在范围 [0, 100]
  • -100 <= Node.val <= 100

问题解答

二叉树的中序遍历顺序为:左子树 → 根节点 → 右子树。以下提供两种常见解法:递归(简单直观)和迭代(进阶要求)。

方法一:递归解法

递归是最直接的实现方式,利用递归栈的特性自然满足中序遍历的顺序。

import java.util.ArrayList;
import java.util.List;class Solution {public List<Integer> inorderTraversal(TreeNode root) {List<Integer> result = new ArrayList<>();// 调用递归辅助方法inorder(root, result);return result;}// 递归辅助函数:遍历当前节点,并将结果存入resultprivate void inorder(TreeNode node, List<Integer> result) {// 边界条件:若节点为空,直接返回if (node == null) {return;}// 1. 先遍历左子树inorder(node.left, result);// 2. 再访问当前节点(根节点)result.add(node.val);// 3. 最后遍历右子树inorder(node.right, result);}
}

思路解析

  • 递归函数 inorder 负责处理单个节点:先递归遍历左子树,再将当前节点的值加入结果列表,最后递归遍历右子树。
  • 终止条件:当节点为 null 时,递归结束(空树/叶子节点的子节点无需处理)。

方法二:迭代解法(栈实现)

迭代法通过显式使用栈模拟递归过程,避免递归调用的栈开销,更符合进阶要求。

import java.util.ArrayList;
import java.util.List;
import java.util.Stack;class Solution {public List<Integer> inorderTraversal(TreeNode root) {List<Integer> result = new ArrayList<>();Stack<TreeNode> stack = new Stack<>();TreeNode cur = root; // 指针记录当前遍历的节点// 循环条件:当前节点不为空 或 栈不为空(还有节点未处理)while (cur != null || !stack.isEmpty()) {// 1. 先将所有左子节点入栈(直到最左侧节点)while (cur != null) {stack.push(cur);cur = cur.left; // 移动到左子节点}// 2. 弹出栈顶节点(此时左子树已处理完,该节点为当前子树的根节点)cur = stack.pop();result.add(cur.val); // 加入结果列表(处理根节点)// 3. 处理右子树cur = cur.right;}return result;}
}

思路解析

  • 使用 cur 指针追踪当前节点,先将所有左子节点依次入栈(确保左子树优先处理)。
  • cur 为空时,弹出栈顶节点(此时该节点的左子树已处理完),将其值加入结果列表,再将 cur 指向其右子节点(处理右子树)。
  • 循环直至 cur 为空且栈为空(所有节点处理完毕)。

复杂度分析

  • 时间复杂度:两种方法均为 O(n),其中 n 为二叉树节点数(每个节点恰好被访问一次)。
  • 空间复杂度
    • 递归解法:O(h)h 为树的高度,递归栈深度),最坏情况(链状树)为 O(n)
    • 迭代解法:O(h)(栈存储的节点数不超过树的高度),最坏情况为 O(n)

两种方法均能正确处理示例输入:

  • 示例1:root = [1,null,2,3] → 输出 [1,3,2]
  • 示例2:root = [] → 输出 []
  • 示例3:root = [1] → 输出 [1]
http://www.dtcms.com/a/557216.html

相关文章:

  • 波动率建模(三)Heston模型及其Python实现
  • 左侧 导航 网站泰安信誉好的网络推广公司
  • python 初学2
  • 51单片机基础-LCD12864液晶显示
  • 在openSUSE-Leap-15.6-DVD-x86_64-Media自制应用软件离线包——备份91个视频解码器的rpm包
  • 《云原生基础设施》
  • dedecms手机网站开发怎么在网站底部添加备案号
  • 2019个人建网站利用关键词进网站后台
  • 物联网技术与应用传感器学习笔记
  • 云架构设计与实践:从基础到未来趋势
  • 【SDIO】【SDMMC】硬件层
  • 算法 - 差分
  • 定制制作网站哪家好北京seo关键词
  • Transformer:Decoder 中,Cross-Attention 所用的 K(Key)和 V(Value)矩阵,是如何从 Encoder 得到的
  • 矩阵系统全面解析:构建智能营销体系的核心引擎
  • 灵山县建设局网站设计论坛最好的网站
  • 整体设计 全面梳理复盘 之14 原型表结构深化与组织表关联重构
  • 使用 GitLab CI/CD 为 Linux 创建 RPM 包(一)
  • Go语言中error的保姆级认知学习教程,由易到难
  • Go语言中通过get请求获取api.open-meteo.com网站的天气数据
  • 哪些网站可以做微课技术支持 英铭网站建设
  • STM32位带操作理论实践
  • 住房和城乡建设部的网站首页不懂网站怎么做平台
  • 禁止Windows 10升级至Windows 11的方法
  • 人工智能之数学基础:随机变量函数的分布(离散和连续)
  • 30.16.2.表现层框架设计
  • DMS 迁移错误:String Length Exceeds DDL Length 完整解决方案
  • 福建建设厅网站官网宣传推广方案
  • 网站搭建的步骤百度网站怎样做
  • 网站的建设与开发discover wordpress