Java 先序 中序 后序的非递归

Java实现二叉树的先序、中序、后续、层次遍历 Java实现二叉树的先序、中序、后续、层次遍历,经验证可用版本,方便各种找工作面试笔试 立即下载

先序:直接用stack遍历,vis当前元素后按顺序压栈右儿子,压栈左儿子

中序:压栈当前节点后接着压栈左儿子,当左儿子为空时vis栈顶元素,压栈栈顶元素的右儿子

        Stack<TreeNode> s = new Stack<>();
        TreeNode head = root;
        while(!s.empty() || head!=null){
            if(head!=null){
                s.push(head);
                head = head.left;
            }else{
                head = s.pop();
                vis(head);
                head = head.right;
            }

while有两个继续的条件 栈不为空(说明还有元素没vis),head不为空(还有等待压栈的元素)

后序:两个栈,记为ab。压root进a,每次取出栈顶元素时,压入b,接着按顺序压栈左儿子 ,右儿子人a. 直到a为空

最后b弹出顺序为后序遍历

        Stack<TreeNode> s1 = new Stack<>();
        Stack<TreeNode> s2 = new Stack<>();
        TreeNode head = root;
        s1.push(head);
        while(!s1.empty()){
            head = s1.pop();
            s2.push(head);
            if(head.left!=null)
                s1.push(head.left)
            if(head.right!=null)
                s1.push(head.right)
        }

Linux磁盘扩容实战:用parted命令无损扩展/data分区(附常见报错解决方案) 本文详细介绍了在Linux生产环境中使用parted命令对已挂载的/data分区进行在线磁盘扩容的完整实战流程。通过风险评估、状态检查、parted工具深度解析及实战演练,指导用户安全完成动态扩容,并提供了常见报错如'Partition is being used'、MBR 2TB限制等的解决方案,确保业务不中断、数据不丢失。 阅读详情

相关推荐

YOLOv8傻瓜式教程

YOLOv8傻瓜式教程,附带详细参数配置。

Father_of_Python的博客 1万+

二叉树的遍历

前序遍历 根节点 -> 左子树 -> 右子树 前序遍历直行结果为:[1,2,4,8,9,5,10,11,3,6,12,13,7,14,15] 递归法 # Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = x # self.left = None # self.right = None cl..

口袋里的星星的博客 166

【论文笔记】LIME: low-light image enhancement via illumination map estimation

【论文笔记】LIME: low-light image enhancement via illumination map estimation 一篇低光图像增强,引用超1000次的经典论文

weixin_45565519的博客 1793

栈区的使用规则、压栈和出栈、栈区先进后出,后进先出

栈区的使用规则、压栈和出栈、栈区先进后出,后进先出

fancynthia的博客 8311

在 Windows 上安装 OpenCV – C++ / Python

而且,安装并不是一件容易的事。这些安装程序仅适用于安装 OpenCV for C++。如果您想安装适用于 Python 的 OpenCV,您将在博客后面找到相关信息。在这篇博文中,我们将在 Windows 上安装适用于 C++ 和 Python 的 OpenCV。C++ 安装是在自定义安装 exe 文件的帮助下完成的。而Python的安装是通过Anaconda完成的。从源代码安装 OpenCV 需要花费大量时间。根据您的硬件和安装配置,该过程可能需要 5 分钟到 2 小时不等。

Demondai999的博客 2090

【UE4】Hierarchical Instanced Static Mesh——一种速度优于Spawn的实例化物体组件

最近需要在场景中实例出很多个相同的模型,位置也很有规律,并且要对它的位置信息进行更新。 但是一个个拖进去实在太麻烦,就发现了Spawn Actor这个蓝图方法,可以实例一个蓝图类在场景中。 但是由于数量较大,实例化的速度太慢,这时发现了一个神奇的组件——Hierarchical Instanced Static Mesh。 新建一个蓝图类,添加该组件,在细节里添加你要实例化的模型对象。 ...

ColorGalaxy 1万+

二叉树前序-中序-后序遍历(递归、栈结构)

目录栈的相关概念前序遍历(pre-order)递归(recursion)辅助栈中序遍历(in-order)递归(recursion)辅助栈后序遍历(post-order)递归(recursion)辅助栈 推荐两个up主: happygirlzt 图灵星球Turing Planet及其个人网站 本博文参考的视频: 二叉树前序中序后序遍历(深度优先搜索)的迭代解法 本博文参考的文章: 数据结构图文解析之:栈的简介及C++模板实现 动画演示+三种实现 94. 二叉树的中序遍历 栈的相关概念 栈顶与栈底:允许元

快乐学术猿 2508

家庭网络中,路由器和交换机的连接顺序

它的目的是给路由器增加端口,用户访问互联网的速度比情况一要快,常用于办公网络、家庭成员多的场景。光纤入户首先连接的肯定是光猫,而在光猫的后面,是先连接交换机?还是应该接路由器呢?家庭网络中路由器和交换机的先后连接顺序。它目的是让更多的用户访问互联网。常用于一些超大型机房、网吧等。至于路由器和交换机的区别。两者之间很多功能都有兼容。但用户上网速度相对较慢。在技术日益迭代的今天。

m0_74075744的博客 1万+

前中后序二叉树遍历迭代方法总结

//inorder public List&lt;Integer&gt; inorderTraversal(TreeNode root) { List&lt;Integer&gt; res=new ArrayList&lt;&gt;(); if (root==null) return res; Stack&lt;TreeNode&gt; s...

fruit513的博客 741

【BUG已解决】ImportError: cannot import name ‘OpenAI‘ from ‘openai‘ 解决方案

的核心是版本不匹配用确认当前版本如果是 0.x 版本 →升级到 1.x升级后代码语法要同步改为团队协作项目务必在中锁定版本号,避免"我这能跑,你那不能跑"的问题对接国产模型时,只需替换base_url参数,SDK 调用方式完全一致。

一键难忘的博客 1万+

风险登记册vs问题日志:项目经理必须掌握的区别与应用

在项目管理的世界里,风险登记册和问题日志就像是项目经理的两个得力助手。我们的目的就是要搞清楚这两个助手各自的特点、区别以及如何在项目中好好使用它们。范围涵盖了项目从启动到结束的整个过程,无论是小项目还是大项目,都能从对这两个工具的正确使用中受益。我们先会用有趣的故事引出风险登记册和问题日志的概念,然后像给小学生讲故事一样解释它们是什么。接着分析它们之间的关系和区别,再用代码示例模拟它们在项目中的应用,之后介绍实际的应用场景、推荐相关工具和资源,探讨未来的发展趋势和挑战。

项目管理的博客 873

Java二叉树的前中后序遍历

本文章主要讲解了Java数据结构中何为二叉树的前中后序遍历,并附带了对应的题目,希望大家可以学习到二叉树的一些知识。

xinhang10的博客 3336

深度学习实战87-高中数学自适应测试系统研究与应用研发,前后台页面设计

大家好,我是微学AI ,今天给大家介绍一下深度学习实战87-高中数学自适应测试系统研究与应用研发,前后台页面设计。高中数学自适应测试系统旨在通过精准评估学生能力,用最少的题目发现其薄弱环节,并提供定制化的学习计划,帮助学生快速提升成绩。同时,系统结合了AI大模型实现自动判卷、生成报告,减轻教师负担,并支持个性化作业布置,使教学更加高效。学生可以清晰了解自身学习状态,教师也能获得精准的学生画像,实现差异化教学。

微学AI的博客 444

Java二叉树的中序,先序,后序遍历非递归实现

对于二叉树这种数据结构的Java实现,首先我们要了解二叉树的前序,中序以及后序的区别,所谓的前序、中序、后续,就是对根节点而言的,左右的遍历顺序不变,前序就是根节点最先遍历,然后左右;中序就是把根节点放在中间遍历;后序则是把根节点放在最后遍历。 中序遍历(非递归实现): 二叉树的中序遍历首先遍历左子树,然后访问根结点,最后遍历右子树。 代码实现: import java.util.Stack; public class Main { public static void main(String

ensemblelearning的博客 480

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

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

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

二叉树的先序,中序,后序遍历序列(java实现非递归与递归)

先序遍历:根左右 中序遍历:左根右 后序遍历:左右根 建树 public class BinaryTree { TreeNode root; public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode() { } TreeNode(int val) { this.val = val;

qq_43434328的博客 932

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

二叉树先序,中序,后序的非递归遍历(附java实现)

非递归遍历 二叉树

abcdef 778

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

分别用递归和非递归方式实现二叉树先序、中序和后序遍历(java实现)

分别用递归和非递归方式实现二叉树先序、中序和后序遍历(java实现)

Davidddl的博客 3236

[算法]二叉树的遍历算法Java实现版本(递归/非递归/先序/中序/后序)

package com.datastructure.tree; import java.util.Stack; /**  * 二叉树的遍历算法Java实现版本(递归/非递归/先序/中序/后序)  *   * Note: 1. 要求JDK5及其以上  *

2174

绝对能看懂!分别用递归非递归的方式分别实现二叉树的先序、中序、后序遍历(java实现)

首先约定:先序:根,左,右  中序:左,根,右  后序:左,右,根 递归实现 递归实现中,总是会经过一个节点三次,所以先序中序和后序的唯一区别就是打印的时机不同 public class Node {//这是Node的结构 public int value; public Node left; public Node right; public Node(int data) { this.value = data; } } public vo

追求大牛之人的博客 5358

层序递归遍历 JAVA_Java实现二叉树的先序、中序、后序、层序遍历(递归和非递归)...

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

weixin_42191359的博客 292

Java建立非递归实现二叉排序树并实现非递归,先序,中序,后序遍历

题目描述 输入一系列整数,建立二叉排序树,并进行前序,中序,后序遍历。 输入描述: 输入第一行包括一个整数n(1<=n<=100)。 接下来的一行包括n个整数。 输出描述: 可能有多组测试数据,对于每组数据,将题目所给数据建立一个二叉排序树,并对二叉排序树进行前序、中序和后序遍历。 每种遍历结果输出一行。每行最后一个数据之后有一个空格。 输入中可能有重复元素,但是输出的二叉树遍历序列中...

EEEEEEcho的博客 426

Java实现二叉树的先序、中序、后序、层序遍历(递归+非递归方法),附带自己深入浅出的讲解

本文只涉及了二叉树的先序、中序、后序和层序的递归和非递归遍历。结合自己的经验总结,和简单易懂的图形,深入浅出的进行介绍。

Java Punk 9491

JAVA 实现二叉树,二叉树的递归遍历(前 中 后),二叉树的非递归遍历(先序 中序 后序),测树的深度和大小的方法

最近在复习数据结构 二叉树。 现在用的是Java 语言, 代码实现了测量深度和大小的 方法。 最主要的 是二叉树的 遍历 。 用了非递归和 递归的方法 来实现二叉树的先序、中序、后序遍历。 代码和注释如下: import java.util.Stack; /* * 此类 构造了二叉树 以及二叉树的递归遍历与非递归遍历 */ public class BinaryTree { //根节...

qq_43507104的博客 333

JAVA 先序、中序、后序、层序,递归非递归遍历二叉树

定义一个二叉树 package com.niuke.binaryTree; public class binaryTree { int data; binaryTree left; binaryTree right; public binaryTree(int data){ this.data=data; left=null; right=null; } //插入节点 public void in...

qq_41980051的博客 244

java-二叉树的遍历-先序、中序、后序(递归和非递归)、层次遍历

[code="java"] import java.util.LinkedList; import java.util.List; import java.util.Stack; public class BinTreeTraverse { //private int[] array={ 1, 2, 3, 4, 5, 6, 7, 8, 9 }; private int[] ...

代码说-Let code talk 130

【数据结构】-java实现二叉树的非递归遍历(先序、中序、后序)

为什么要选择非递归实现二叉树的遍历 递归实现二叉树的遍历具有代码简洁、易于理解的优点。但是缺点也不容小觑。最大的一个缺点就是效率低下。 递归调用使用的是系统栈,所有的递归函数均调用系统栈。由此系统栈面向的递归函数也是不一样的。 非递归调用的是自己定义的栈,相对于系统栈有着术业有专攻的特点。 由于在栈的使用上不一样,当然,哪个比较适合选哪个栈了,由此非递归效率要高些。 非递归调用重要的是栈的入栈和...

小呼哥的博客 402
上一篇: LeetCode 1382. Balance a Binary Search Tree
下一篇: Java String Integer互相转
Dale_zero
博客等级 码龄9年 10粉丝 174原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值