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

2025年- H52-Lc160--114. 二叉树展开为链表(前序遍历 + 用栈 + 原地修改)--Java版

1.题目描述

在这里插入图片描述

2.思路

(1)使用前序遍历 + 重构指针
(2)前序遍历 + 用栈
//实现前序遍历(根 -> 左 -> 右),你需要先压右子树,再压左子树,因为栈是**后进先出(LIFO)**的结构:

3.代码实现

方法一:前序遍历 + 重构指针( no try)

 if (root == null) return;flatten(root.right);flatten(root.left);root.right = prev;root.left = null;prev = root;

方法二:前序遍历 + 用栈 (yes try)

import java.util.*;class TreeNode {int val;TreeNode left;TreeNode right;TreeNode() {}TreeNode(int val) { this.val = val; }TreeNode(int val, TreeNode left, TreeNode right) {this.val = val;this.left = left;this.right = right;}}
public class H114 {public void flatten(TreeNode root) {List<Integer> reasult=new ArrayList<>();if (root==null) return;Stack<TreeNode> st=new Stack<>();st.push(root);while(!st.isEmpty()){TreeNode cur=st.pop();//实现前序遍历(根 -> 左 -> 右),你需要先压右子树,再压左子树,因为栈是**后进先出(LIFO)**的结构:if(cur.right!=null){st.push(cur.right);}if(cur.left!=null){st.push(cur.left);}// 改指针if(!st.isEmpty()){cur.right=st.peek();}cur.left=null;}}
}
http://www.xdnf.cn/news/9059.html

相关文章:

  • Spring Cloud Gateway 限流实践:基于 Redis 令牌桶算法的网关层流量治理
  • 2025河北CCPC 题解(部分)
  • 第二章 1.2 数据采集过程中的安全性问题
  • 国外常用支付流程简易说明(无代码)
  • Leetcode 3562. Maximum Profit from Trading Stocks with Discounts
  • 视频检测AI智能分析网关V4摄像头异常位移检测算法全场景智能防护方案
  • “_snprintf”: 不是“std”的成员
  • 【监控】Blackbox Exporter 黑盒监控
  • word的页眉页脚设置
  • 数据库的索引概述与常见索引结构
  • Unity性能优化
  • C++(4)
  • 解锁 Linux 内核潜能:高效参数调优实战指南
  • 《软件工程》第 3 章 -需求工程概论
  • vector的实现
  • TypeScript 针对 iOS 不支持 JIT 的优化策略总结
  • 裁判模型的定义与训练
  • 单片机简介
  • Postman基础操作
  • Vue 2 混入 (Mixins) 的详细使用指南
  • 如何通过AI辅助数据分析
  • leetcode-295 Find Median from Data Stream
  • 【科研绘图系列】R语言绘制柱状图(bar plot)
  • Vue中的 VueComponent
  • pytorch简单线性回归模型
  • 如何轻松地将文件从 iPhone 传输到 PC
  • Python基础教程:从零开始学习编程 - 第1-3天
  • 全光网络ICU床旁监护系统:重新定义重症监护的智慧中枢
  • python入门day01
  • UE5 Niagara Advance 学习笔记