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

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;}}
}

相关文章:

  • 04_redis之ZSet使用实例-积分榜
  • leetcode-295 Find Median from Data Stream
  • Wan2.1 图生视频 多卡推理批量生成视频
  • 视频问答功能播放器(视频问答)视频弹题功能实例
  • ffmpeg转换竖屏(画面是横屏旋转90度的竖屏文件格式)视频到横屏
  • 网易互娱游戏研发实习一面
  • 在 ElementUI 中实现 Table 单元格合并
  • 萤石云实际视频实时接入(生产环境)
  • Node.js全局对象详解:console、process与核心功能
  • [ARM][架构] 01.ARMv7 特权等级与核心寄存器
  • 代码随想录算法训练营第60期第四十八天打卡
  • 开源 FcDesigner 表单设计器组件事件详解
  • 算法打卡第七天
  • 【ARTS】【LeetCode-59】螺旋矩阵
  • Debian系统安装Python详细教程及常见问题解答
  • Leetcode 3563. Lexicographically Smallest String After Adjacent Removals
  • Steam发布游戏过程的若干问题
  • 【计算机网络】IP 协议深度解析:从基础到实战
  • 晚期NSCLC临床试验终点与分析策略
  • 重学计算机网络之命令整理
  • 有没有做公章的网站/网络营销的推广方式都有哪些
  • 南宁江南区网站制作价格/百度客服电话4001056
  • 花都疫情最新消息/南宁网站seo排名优化
  • 邢台企业网站建设价格/他达拉非片和伟哥区别
  • 网站搭建报价单/手机百度关键词优化
  • 做会员卡的网站在线/搜索引擎是软件还是网站