算法-二叉树展开单链表

ops/2024/10/20 19:12:58/

这道题我们可以利用栈来做,利用栈先进后出的特性 每次先加入右节点再加入左节点,这样的话弹出的时候正好左节点在前面,右节点在后面满足题目要求。

然后至于是构造单链表,我们可以用一个prev节点 prev的left永远都是null 而prev的right永远都等于cur 

因为每次curr都是栈内弹出来的 按照左节点后进先出,所以prev的右节点每次其实都是原来二叉树的左节点,这样的话就能保证满足原二叉树的先序遍历。

代码如下:

public class flatten {class  Solution{public void flatten(TreeNode root) {// 利用栈来解决 每次从栈内弹出一个节点作为当前访问的节点,获得该节点的子节点,如果子节点不为空,则以此右左节点压入栈内if(root == null) return;Deque<TreeNode> stack = new LinkedList<TreeNode>();stack.push(root);TreeNode prev = null;while(!stack.isEmpty()) {TreeNode curr=stack.pop();if(prev != null) {prev.left=null;prev.right=curr;}TreeNode left=curr.left;TreeNode right=curr.right;if(right != null) {stack.push(right);}if(left != null) {stack.push(left);}prev=curr;}}}
}


http://www.ppmy.cn/ops/127063.html

相关文章

Java中的四种内部类

Java中的四种内部类&#xff0c;我们可以想象成一个家庭里的不同成员&#xff0c;每个成员都有其特殊的角色&#xff1a; 成员内部类&#xff08;Member Inner Class&#xff09; - 就像家里的孩子&#xff0c;它们属于家庭&#xff08;类&#xff09;&#xff0c;并且可以在家…

SpringBoot智能推荐:健康生活新体验

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式&#xff0c;是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示&#xff1a; 图4-1系统工作原理…

力扣 中等 143.重排链表

文章目录 题目介绍题解 题目介绍 题解 class Solution {public void reorderList(ListNode head) {ListNode mid middleNode(head);ListNode head2 reverseList(mid);while (head2.next ! null) {ListNode nxt head.next;ListNode nxt2 head2.next;head.next head2;head2.…

智联云采 SRM2.0 testService SQL注入漏洞复现

0x01 产品简介 智联云采是一款针对企业供应链管理难题及智能化转型升级需求而设计的解决方案,针对企业供应链管理难题,及智能化转型升级需求,智联云采依托人工智能、物联网、大数据、云等技术,通过软硬件系统化方案,帮助企业实现供应商关系管理和采购线上化、移动化、智能…

K8s-pod控制器HPA、DS、Job、CJ

一、Horizontal Pod Autoscaler(HPA) 在上一节&#xff0c;我们已经可以实现通过手工执行kubectl scale命令实现Pod扩容或缩容&#xff0c;但是这显然不符合Kubernetes的定位目标——自动化、智能化。 Kubernetes期望可以实现通过监测Pod的使用情况&#xff0c;实现pod数量的自…

基于SpringBoot+Vue+uniapp的诗词学习系统的详细设计和实现

详细视频演示 请联系我获取更详细的演示视频 项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念&#xff0c;提供了一套默认的配置&#xff0c;让开发者可以更专注于业务逻辑而不…

LeetCode搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2 …

可能是NextJs(使用ssr-api route)打包成桌面端的最佳解决方式

可能是NextJs(使用ssr/api route)打包成桌面端的最佳解决方式 前言 在我使用nextron&#xff08;nextelectron&#xff09;写了一个项目后打包发现nextron等一系列桌面端框架在生产环境是不支持next的ssr也就是api route功能的这就导致我非常难受&#xff0c;耗费了小半个月结…