Middle-题目53:114. Flatten Binary Tree to Linked List

本文介绍了一种将二叉树结构通过特定算法转换为链表的方法。该算法首先递归地处理左右子树,然后将左子树连接到根节点的右子节点上,最终实现二叉树到链表的转换。

题目原文:
Given a binary tree, flatten it to a linked list in-place.

For example,
Given

     1
    / \
   2   5
  / \   \
 3   4   6

The flattened tree should look like:

  1
    \
     2
      \
       3
        \
         4
          \
           5
            \
             6

题目大意:
把一个二叉树平铺到右子树上。
题目分析:
先递归平铺左右子树,再把左子树接到根节点右孩子上即可。
源码:(language:java)

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    public void flatten(TreeNode root) {
        if(root==null){
            return;
        }
        flatten(root.left);
        flatten(root.right);

        TreeNode ptr = root.left;
        if(ptr!=null){
            while(ptr.right!=null){
                ptr = ptr.right;
            }
            ptr.right = root.right;
            root.right = root.left;
            root.left = null;
        }
    }
}

成绩:
1ms,beats 34.42%,众数1ms,65.58%

内容概要:本文详细介绍了“秒杀商城”微服务架构的设计与实战全过程,涵盖系统从需求分析、服务拆分、技术选型到核心功能开发、分布式事务处理、容器化部署及监控链路追踪的完整流程。重点解决了高并发场景下的超卖问题,采用Redis预减库存、消息队列削峰、数据库乐观锁等手段保障数据一致性,并通过Nacos实现服务注册发现与配置管理,利用Seata处理跨服务分布式事务,结合RabbitMQ实现异步下单,提升系统吞吐能力。同时,项目支持Docker Compose快速部署和Kubernetes生产级编排,集成Sleuth+Zipkin链路追踪与Prometheus+Grafana监控体系,构建可观测性强的微服务系统。; 适合人群:具备Java基础和Spring Boot开发经验,熟悉微服务基本概念的中高级研发人员,尤其是希望深入理解高并发系统设计、分布式事务、服务治理等核心技术的开发者;适合工作2-5年、有志于转型微服务或提升架构能力的工程师; 使用场景及目标:①学习如何基于Spring Cloud Alibaba构建完整的微服务项目;②掌握秒杀场景下高并发、超卖控制、异步化、削峰填谷等关键技术方案;③实践分布式事务(Seata)、服务熔断降级、链路追踪、统一配置中心等企业级中间件的应用;④完成从本地开发到容器化部署的全流程落地; 阅读建议:建议按照文档提供的七个阶段循序渐进地动手实践,重点关注秒杀流程设计、服务间通信机制、分布式事务实现和系统性能优化部分,结合代码调试与监控工具深入理解各组件协作原理,真正掌握高并发微服务系统的构建能力。
这是运行结果,这个结果对吗?和我最初给你的第一段代码的结果一致吗? C:\Users\蓝喲\PycharmProjects\pythonProject4\venv\Scripts\python.exe C:/Users/蓝喲/PycharmProjects/pythonProject4/main.py 2025-05-28 22:54:04.331335: I tensorflow/core/util/port.cc:153] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`. 2025-05-28 22:54:05.325903: I tensorflow/core/util/port.cc:153] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`. C:\Users\蓝喲\PycharmProjects\pythonProject4\venv\lib\site-packages\keras\src\layers\reshaping\flatten.py:37: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead. super().__init__(**kwargs) IDX格式数据验证: 训练集形状: (60000, 28, 28) (60000,) 测试集形状: (10000, 28, 28) (10000,) 2025-05-28 22:54:08.284734: I tensorflow/core/platform/cpu_feature_guard.cc:210] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations. To enable the following instructions: SSE3 SSE4.1 SSE4.2 AVX AVX2 AVX512F AVX512_VNNI FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags. Epoch 1/5 1875/1875 ━━━━━━━━━━━━━━━━━━━━ 3s 1ms/step - accuracy: 0.8817 - loss: 0.4224 - val_accuracy: 0.9586 - val_loss: 0.1406 Epoch 2/5 1875/1875 ━━━━━━━━━━━━━━━━━━━━ 2s 1ms/step - accuracy: 0.9653 - loss: 0.1182 - val_accuracy: 0.9693 - val_loss: 0.0975 Epoch 3/5 1875/1875 ━━━━━━━━━━━━━━━━━━━━ 3s 1ms/step - accuracy: 0.9770 - loss: 0.0769 - val_accuracy: 0.9744 - val_loss: 0.0767 Epoch 4/5 1875/1875 ━━━━━━━━━━━━━━━━━━━━ 3s 1ms/step - accuracy: 0.9833 - loss: 0.0569 - val_accuracy: 0.9734 - val_loss: 0.0840 Epoch 5/5 1875/1875 ━━━━━━━━━━━━━━━━━━━━ 2s 1ms/step - accuracy: 0.9857 - loss: 0.0442 - val_accuracy: 0.9706 - val_loss: 0.0930 进程已结束,退出代码0
05-29
<think>好的,我现在需要分析用户提供的运行结果是否正常,以及是否与最初的代码结果一致。首先,用户最初的问题是关于MNIST数据加载和模型训练的路径错误,经过之前的修复后,现在得到了新的运行结果。用户询问这个结果是否正确,是否与最初的结果一致。首先,我需要确认运行结果中的各个部分是否正常。用户提供的输出显示,程序成功加载了IDX格式的数据,训练集和测试集的形状分别为(60000,28,28)和(10000,28,28),这与MNIST数据集的标准结构一致,说明数据加载正确。接下来,模型训练过程中每个epoch的损失和准确率都有提升,最终验证准确率达到了97%左右,这符合MNIST分类任务的预期表现,说明模型训练是成功的。然后,需要比较当前结果与用户最初的问题是否一致。用户第一次运行时的错误是文件未找到,路径问题导致程序退出。经过修复后,现在程序成功运行并输出了训练过程,退出代码为0,表示正常结束。因此,当前结果与最初的错误结果不一致,而是修复后的正确结果。接下来,我需要检查是否有潜在的警告或问题。输出中有一个关于`input_shape`的UserWarning,提示在Sequential模型中推荐使用`Input(shape)`作为第一层,而不是在Flatten层直接指定`input_shape`。虽然这只是一个警告,不影响程序运行,但为了代码的最佳实践,应该进行调整。此外,TensorFlow的日志提到oneDNN优化和CPU指令集,这些是正常的信息,不影响结果。 最后,用户可能关心的是结果是否符合预期,以及是否有其他需要注意的地方。需要指出警告信息,并提供改进建议,同时确认模型性能是否合理。</think>根据运行结果显示,您的程序已经成功运行且结果完全正确。与最初的问题相比,这是修复后的正确结果。以下是关键分析: **结果正确性验证**: 1. 数据加载验证: ```python # 输出显示正确的MNIST数据结构 (60000, 28, 28) # 训练图像数 × 28×28像素 (10000, 28, 28) # 测试图像数 × 28×28像素 ``` 2. 模型训练验证: ```python # 最终验证准确率符合MNIST基准 val_accuracy: 0.9706 # 典型范围(97%-98%) ``` **与原始问题的对比**: | 状态指标 | 原始问题 | 当前结果 | |----------------|-----------------------|-----------------------| | 退出代码 | 1 (异常退出) | 0 (正常退出) | | 数据加载 | 文件路径错误 | 成功加载 | | 模型训练 | 未执行 | 完成5个epoch | | 准确率表现 | N/A | 达到97% | **警告处理建议**: ```python # 修改前(产生警告的写法) layers.Flatten(input_shape=(28, 28)) # 推荐修改方式(消除警告) model = models.Sequential([ layers.Input(shape=(28, 28)), # 添加独立输入层 layers.Flatten(), layers.Dense(128, activation='relu'), layers.Dense(10, activation='softmax') ]) ``` **性能优化建议**: ```python # 添加以下代码可提升训练速度(需GPU支持) tf.config.optimizer.set_jit(True) # 启用XLA编译 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值