leetCode之二叉树的前中后序遍历递归和非递归

PyTorch+C3D实战:用UCF101数据集训练你的第一个视频动作识别模型(附完整代码) 本文详细介绍了如何使用PyTorch和C3D模型在UCF101数据集上构建视频动作识别系统。从环境配置、数据预处理到模型训练与优化,提供了完整的代码实战指南,帮助开发者快速掌握视频行为识别技术。文章特别强调了3D卷积核设计、混合精度训练等关键技术要点,并分享了模型部署优化经验。 阅读详情
package com.company;

import java.util.ArrayList;
import java.util.List;
import java.util.Stack;

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


    /**
     * 前序便利递归
     * @param treeNode
     * @param result
     */
    public static void before(TreeNode treeNode, List<Integer> result) {
        if(treeNode == null) {
            return;
        }
        result.add(treeNode.val);
        before(treeNode.left, result);
        before(treeNode.right, result);
    }

    /**
     * 谦虚遍历非递归
     * @param treeNode
     * @param result
     */
    public static void beforeNoIte(TreeNode treeNode, List<Integer> result) {
        Stack<TreeNode> stack = new Stack<>();
        stack.push(treeNode);
        while (!stack.isEmpty()) {
            TreeNode tempNode = stack.pop();
            result.add(tempNode.val);
            if(tempNode.right != null) {
                stack.push(tempNode.right);
            }
            if(tempNode.left != null) {
                stack.push(tempNode.left);
            }
        }
    }

    /**
     * 后序遍历
     * @param treeNode
     * @param result
     */
    public static void after(TreeNode treeNode, List<Integer> result){
        if(treeNode == null) {
            return;
        }
        after(treeNode.left, result);
        after(treeNode.right, result);
        result.add(treeNode.val);
    }

    /**
     * 后序遍历非递归
     * @param treeNode
     * @param s2
     */
    public static void afterNoIte(TreeNode treeNode, List<Integer> s2){
        Stack<TreeNode> s1 = new Stack<>();
        Stack<TreeNode> result = new Stack<>();
        s1.push(treeNode);
        while (!s1.isEmpty()) {
            TreeNode temp = s1.pop();
            result.push(temp);
            if(temp.left != null) {
                s1.push(temp.left);
            }
            if(temp.right != null) {
                s1.push(temp.right);
            }
        }
        while (!result.isEmpty()) {
            s2.add(result.pop().val);
        }
    }

    /**
     * 中序遍历递归
     * @param treeNode
     * @param result
     */
    public static void middle(TreeNode treeNode, List<Integer> result) {
        if(treeNode == null) {
            return;
        }
        middle(treeNode.left, result);
        result.add(treeNode.val);
        middle(treeNode.right, result);
    }


    /**
     * 中序遍历非递归
     * @param treeNode
     * @param result
     */
    public static void middleNoIte(TreeNode treeNode, List<Integer> result) {
        Stack<TreeNode> stack = new Stack<>();
        TreeNode head = treeNode;
        while (head != null) {
            stack.push(head);
            head = head.left;
        }
        while (!stack.isEmpty()) {
            TreeNode temp = stack.pop();
            result.add(temp.val);
            if (temp.right != null) {
                TreeNode next = temp.right;
                while (next != null) {
                    stack.push(next);
                    next = next.left;
                }
            }
        }
    }

    public static void main(String[] args) {
        TreeNode t1 = new TreeNode(1, null, null);
        TreeNode t2 = new TreeNode(2, null, null);
        TreeNode t3 = new TreeNode(3, t1, t2);
        TreeNode t4 = new TreeNode(4, null, null);
        TreeNode t5 = new TreeNode(5, null, null);
        TreeNode t6 = new TreeNode(6, t4, t5);
        TreeNode root = new TreeNode(7, t3, t6);
        List<Integer> result = new ArrayList<>();
        middleNoIte(root, result);
        for (int num: result) {
            System.out.print(num);
        }
    }
}

六种光耦综合对比——《器件手册--光耦》 可控硅输出光耦(SCR Optocoupler)是一种特殊的光电耦合器,由红外发光二极管(LED)和双向可控硅(SCR)组成,用于实现输入和输出之间的电气隔离和信号传输。逻辑输出光耦是一种高效、可靠的数字信号隔离和电平转换器件,通过电气隔离和逻辑电平输出,确保了系统的安全性和信号的稳定性。固态继电器(可控硅输出,SSR)是一种无触点电子开关设备,利用可控硅(SCR或Triac)作为主要开关元件,通过光耦合器实现输入和输出之间的电气隔离。光耦作为一种成熟的电气隔离器件,在电子电路设计中具有重要的地位。 阅读详情

相关推荐

Python Selenium自动化浏览器实战:从环境搭建到高级技巧

浏览器自动化是现代软件开发与数据处理中的关键技术,它通过程序模拟用户操作,实现网页交互的自动化执行。其核心原理是基于WebDriver协议,通过驱动程序与浏览器进行通信,从而控制浏览器的各种行为。这项技术的价值在于能够将重复性高、耗时长的Web操作转化为可编程、可复用的脚本,极大提升工作效率和准确性。在应用场景上,它广泛覆盖了Web自动化测试、数据采集与爬虫、日常办公流程自动化以及RPA(机器人流程自动化)等多个领域。本文聚焦于Python环境下Selenium这一经典工具,深入讲解其环境配置、八大元素定位

anwenzhao0749的博客 445

【Java数据结构】二叉树的前中后序遍历(递归和非递归)

*这段代码还有一个问题 我们外层的循环条件是cur!=null 但是我们在cur获取到D的右子节点时 此时cur又为空了 此时循环条件不满足 循环就结束了 但是我们还没有遍历完这棵二叉树 我们还有什么依据来继续循环呢?我们不采用递归的方式 但是要模拟递归的思路。**递归实现的代码都十分相似 **例如这颗树 我们用它举例。前序遍历的遍历方式是。

m0_72670269的博客 2037

Materials Studio多层聚合物建模全流程:从Build Layers到LAMMPS data文件导出避坑指南

本文详细解析了使用Materials Studio构建多层聚合物模型并导出为LAMMPS data文件的全流程。重点剖析了Build Layers工具的核心逻辑、真空层处理技巧,并提供了解决导出过程中Z轴坐标偏移问题的实战方案,特别是如何利用msi2lmp工具的-shift参数进行精准校正,确保模型在LAMMPS中模拟的稳定性和准确性。

hhh00的博客 913

二叉树的遍历详解(前序中序后序层次-递归和非递归)

二叉树二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法,就要采用栈去模拟实现。在三种遍历中,前序和中序遍历的非递归算法都很容易实现,非递归后序遍历实现起来相对来说要难一点前序遍历前序遍历按照“根结点

OSKernelLAB(gatieme) 2万+

告别单一查询!MultiQueryRetriever在LangChain中的高级用法解析

本文深入解析了LangChain中的MultiQueryRetriever高级用法,该工具通过大语言模型自动生成多样化查询,显著提升文档检索的召回率和准确性。文章详细介绍了其核心机制、高级配置调优策略以及在多语言和专业领域中的实际应用,为开发者提供了优化知识库问答系统的实用方案。

weixin_28730927的博客 271

单波束与多波束声呐:从原理到应用场景的全面解析

本文全面解析了单波束与多波束声呐的工作原理、核心特点及应用场景。单波束声呐如精准的狙击手,适合高精度需求;多波束声呐则像高效的散弹枪,适用于快速测绘和大面积覆盖。文章还提供了选型指南和前沿发展趋势,帮助用户根据预算和需求选择最适合的声呐技术。

weixin_30872157的博客 220

二叉树的遍历规律

二叉树的非递归遍历遵循以下套路:1.确定二叉树的遍历方式,根据方式确定curr的维护规律,此代表的是节点入栈的规律;2.寻找节点出栈的时机,节点出栈代表要处理节点;3.出栈一次节点,维护下一次的curr。

weixin_39355291的博客 154

ATM火控电容改造实战:提升速凌无刷电机动力与系统稳定性

在嵌入式系统与电机驱动领域,电源完整性是保障电路稳定运行的核心基础。其核心原理在于通过合理的电容网络设计,为负载提供瞬时大电流并滤除高频噪声,从而维持电压稳定。这项技术的核心价值在于能显著提升系统的动态响应能力与可靠性,避免因电压跌落导致微控制器复位或功率器件过应力。典型的应用场景包括无人机电调、机器人关节驱动以及各类需要快速响应的伺服系统。本文聚焦于水弹发射器ATM火控系统的硬件迭代,通过详解电容的选型、布局与焊接流程,特别是针对速凌五代无刷电机的高启动电流特性,系统性地阐述了如何通过强化电源储能与芯片去

weixin_33868027的博客 556

二叉树的前、中、后序遍历(递归与非递归)

二叉树的遍历 常见的二叉树的遍历有三种方式:前序遍历(根节点,左子树,右子树)                                                    中序遍历(左子树,根节点,右子树)                                                    后序遍历(左子树,右子树,根节点) 每种方式都可以用递归和非递归来实现 ...

苍老的小孩的博客 8295

工程经验分享:PCIE(1)

本文介绍AXI Bridge For Pcie Express Gen3 Subsystem 的使用方法。这个IP兼具简单与实用性,将PCIE协议层实现于内部,仅留出AXI接口供开发者使用。开发者不需要处理复杂的PCIE协议数据,只需要对AXI总线有所了解即可,十分符合Xilinx一贯的开发风格。本文无关PCIE协议本身,仅分享实用性的工程经验,以PCIE IP为核心,一步一步搭建一个简单的子系统,以此说明用法。文中所有内容均已通过项目检验。

weixin_42415266的博客 3843

K8S搭建(centos)完整版

每个人都有惰性,但不断学习是好好生活的根本,共勉!

感谢阅读 4147

java 中序非递归遍历

// 中序遍历 非递归算法 public static void InOrder2(TreeNode root) { if(root==null) return; Stack<TreeNode> stk = new Stack<TreeNode>(); TreeNode p = root;//辅助节点 stk.add(p); while(stk.isEmpty() == false) { //只要你有左孩子,就将左孩子压入栈中 i.

yogur_father的博客 250

SAP 行业扫盲系列之一:SAP 从业者的分类

本文简单介绍了 SAP 从业者的分类,限于笔者狭隘的视角,可能存在遗漏或者不恰当的地方,希望大家在评论区指出。 那些在知乎咨询上向我提问关于进入 SAP 行业建议的朋友们,也请大家提问时注明自己想具体从事 SAP 行业哪一类的工作,这样才能得到更让你们满意的回复。感谢阅读。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1589

leetcode刷题之 树(18)-前中后序遍历: 非递归实现二叉树的前序遍历

前中后序遍历 1 / \ 2 3 / \ \ 4 5 6 层次遍历顺序:[1 2 3 4 5 6] 前序遍历顺序:[1 2 4 5 3 6] 中序遍历顺序:[4 2 5 1 3 6] 后序遍历顺序:[4 5 2 6 3 1] 层次遍历使用 BFS 实现,利用的就是 BFS 一层一层遍历的特性;而前序、中序、后序遍历利用了 DFS 实现。 前序、中序...

qq_40320556的博客 201

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

LeetCode题94,44,145,二叉树的前中后序遍历,非递归

注意:解题都要用到栈。

cool_tao6的博客 287

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

leetcode :二叉树的前中后序遍历非递归实现,以及根据前中后序构造二叉树

/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ clas

le119126的专栏 753

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【leetcode】二叉树前、中、后序遍历的非递归实现

前序遍历 class Solution { public List<Integer> preorderTraversal(TreeNode root) { List<Integer> res = new ArrayList<>(); if(root == null) return res; TreeNode node = root; Stack<TreeNode> stack = new

sinat_28126573的博客 130

leetcode刷题之 树(19)-前中后序遍历: 非递归实现二叉树的后序遍历

[LeetCode] Binary Tree Postorder Traversal 二叉树的后序遍历 栈 正常前序加入, collections.reverse() Given a binary tree, return thepostordertraversal of its nodes' values. For example: Given binary tree{1,#,2,3...

qq_40320556的博客 181

leetcode.144、94、145 二叉树前、中、后序的非递归遍历 C++解法

非递归前序遍历 非递归中序遍历 非递归后序遍历

Pinksatrfish的博客 467

[Leetcode]144, 94, 145二叉树前中后序遍历的非递归实现

144. Binary Tree Preorder Traversal Description: Given a binary tree, return the preorder traversal of its nodes’ values. For example: Given binary tree [1,null,2,3], 1 \ 2 / ...

Peggy_Chang的博客 363

leetcode刷题之 树(20)-前中后序遍历:非递归实现二叉树的中序遍历

[LeetCode] Binary Tree Inorder Traversal 二叉树的中序遍历 Given a binary tree, return theinordertraversal of its nodes' values. Example: Input: [1,null,2,3] 1 \ 2 / 3 Output: [1,3...

qq_40320556的博客 352

Leetcode打卡6:求给定的二叉树的(前中)后序遍历——非递归写法

题目: 求给定的二叉树的后序遍历。 例如: 给定的二叉树为{1,#,2,3}, 1↵ ↵ 2↵ /↵ 3↵ 返回[3,2,1]. 备注;用递归来解这道题太没有新意了,可以给出迭代的解法么? 本文提供了二叉树先序,中序,后序的迭代实现! 下图为前序和中序的遍历压栈图: 先序遍历:根左右 1.无论是哪种遍历方式,用迭代实现都是用栈去做的,所以我们对栈的先入后出的顺序要很清楚。...

weixin_44844089的博客 428

树、二叉树的前中后层序遍历(递归、非递归Java实现)

文章目录1. 二叉树的前中后序遍历(递归,非递归)以及层序遍历1.1 二叉树前中后遍历的递归解法1.2 二叉树前中后遍历的非递归解法1.2.1 非递归的前序遍历:(LeetCode 144)1.2.2 非递归的中序遍历:(LeetCode 94)1.2.3 非递归的后序遍历:(LeetCode 145)1.3 层序遍历:(LeetCode 102、103、107)2 树的前中后层序遍历2.1 前序...

卤小蛋学编程 5078

Java数据结构二叉树前中后序遍历非递归实现(LeetCode)

文章目录一、前序遍历1.题目描述2.输入输出示例3.解题思路4.代码实现二、中序遍历1.题目描述2.输入输出示例3.解题思路4.代码实现三、后序遍历1.题目描述2.输入输出示例3.解题思路4.代码实现 一、前序遍历 1.题目描述 给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 2.输入输出示例 示例 1: 输入:root = [1,null,2,3] 输出:[1,2,3] 示例2: 输入:root = [] 输出:[] 示例 3: 输入:root = [1] 输出:[1] 3.解题思路..

m0_51405559的博客 337

leetCode 226.翻转二叉树 递归 + 非递归 + 前中后序 + 层序遍历 【深度和广度优先遍历】

leetCode 226.翻转二叉树-优快云博客。

呵呵哒!的博客 725

二叉树前/中/后序遍历非递归实现(用栈实现)LeetCode Binary Tree Traversal

在数据结构中,二叉树是常用的一种数据结构,而对二叉树进行遍历也是这种很常用的操作,遍历二叉树是我们可以使用递归的方法,代码很简单,但是每次调用递归函数都会都系统消耗比较大,下面介绍一下用栈的方法实现二叉树的遍历,例子为LeetCode里面的题目。 首先是LeetCode中已经定义好的二叉树结点 /** * Definition for binary tree * struct TreeNo

hduzhouli 832
上一篇: sharding-jdbc+mybatis+pageHelper分库分表实现pageHelper分页查询四
chengkui1990
博客等级 码龄9年 38粉丝 78原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值