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

北京网站建设价钱莱芜金点子信息港招聘

北京网站建设价钱,莱芜金点子信息港招聘,wap的网站模板下载,网站开发各个文件1、题目描述 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1] 示例 2: 输入:root [2,1,3] 输出:[2,3,1…

1、题目描述

给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。

示例 1:

输入:root = [4,2,7,1,3,6,9]
输出:[4,7,2,9,6,3,1]

示例 2:

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

示例 3:

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

提示:

  • 树中节点数目范围在 [0, 100] 内

  • -100 <= Node.val <= 100

2、方法1:递归法

核心思想:采用分治思想,先处理子树再处理根节点

  1. 递归到最左叶子节点

  2. 递归到最右叶子节点

  3. 从底部开始逐层交换左右子树

  4. 最终返回完成翻转的根节点

public TreeNode invertTree(TreeNode root) {if(root == null) return null;invertTree(root.left);   // 递归翻转左子树invertTree(root.right);  // 递归翻转右子树swap(root);             // 交换当前节点的左右子节点return root;
}

复杂度分析

  • 时间复杂度:O(n) 每个节点访问一次

  • 空间复杂度:O(h) 递归栈空间(h为树高)

3、方法2:迭代法(层序遍历+队列)

核心思想:广度优先遍历,逐层交换节点

  1. 使用队列实现BFS(广度优先)遍历,逐层交换

  2. 每访问一个节点立即交换其左右子节点

  3. 子节点入队前已完成交换,保证后续正确处理

public TreeNode invertTree(TreeNode root) {if (root == null) return null;Queue<TreeNode> queue = new LinkedList<>();queue.offer(root);while (!queue.isEmpty()){TreeNode node = queue.poll();swap(node);  // 核心交换操作if (node.left != null) queue.offer(node.left);if (node.right != null) queue.offer(node.right);}return root;
}

复杂度分析

  • 时间复杂度:O(n)

  • 空间复杂度:O(w) w为树的最大宽度

4、方法3:迭代法(后序遍历+栈)

核心思想:用栈模拟递归过程,显式控制遍历顺序

  1. 维护pre指针标记已访问的右子树

  2. 只有确保左右子树都访问后才执行交换

  3. 严格遵循左→右→根的处理顺序

public TreeNode invertTree(TreeNode root) {if(root == null) return null;Stack<TreeNode> stack = new Stack<>();TreeNode cur = root, pre = null;while (cur != null || !stack.isEmpty()){while (cur != null){stack.push(cur);cur = cur.left;}cur = stack.pop();if (cur.right == pre || cur.right == null){swap(cur);      // 后序位置交换pre = cur;cur = null;} else {stack.push(cur);cur = cur.right;}}return root;
}

复杂度分析

  • 时间复杂度:O(n)

  • 空间复杂度:O(h)

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

相关文章:

  • 摄影入门学习笔记
  • 网站设置怎么调济南网站建设方案书范文
  • 服务器怎么放网站吗国家商标免费查询入口
  • iOS八股文之 组件化
  • 系统规划与管理师 论文范文
  • visual studio做的网站商品推广软文800字
  • 个人网站推广方法小型的游戏网站怎么做
  • Photoshop - Photoshop 工具栏(22)单行选框工具
  • 郑州网站设计见效快服装设计网站有哪些
  • 第一章:从零开始构建你的第一个C#/.NET应用程序
  • 【51单片机】【protues仿真】基于51单片机波形发生器系统
  • Debug —— 本地Mysql数据迁移到Docker的Mysql容器中,使用创建容器时的正确密码登录失败
  • Mesh Wi-Fi网络技术
  • SpringBoot的yaml配置文件,热部署
  • 我网站正在建设中wordpress 403
  • 【深度学习】超参数调整(Hyperparameter Tuning)
  • .net 网站开发教程wordpress阿里云oss插件
  • 【Linux】多路转接epoll
  • Flutter中mixing的原理及应用场景
  • 如何做购物网站吴谨含厂家不愿做网站
  • 如何编译QT可执行release程序
  • 网站优化竞争对手分析自己做的娱乐平台网站
  • 个人网站 审批wordpress文件上传
  • 跟der包学习java_day3「运算符和表达式」
  • 720全景网站怎么做wordpress 白边
  • 网站职业技术培训学校深圳宝安做网站的公司
  • 【Linux】进程概念(二)
  • 全国网站设计公司wordpress 缓慢
  • 平台商城网站开发如何修复网站中的死链
  • Flask-SQLAlchemy 操作 SQLite 数据库示例