Binary Tree Preorder Traversal @leetcode

基于Hadoop的NBA篮球球员大数据分析与可视化系统大数据分析系统python的项目(源码+lw+部署文档+讲解等) 本系统以 Hadoop 为基础,致力于对 NBA 篮球球员的海量数据进行深入分析与可视化呈现。它能够收集来自多个数据源的丰富数据,包括球员比赛统计数据、身体素质数据、技术特点数据等。利用 Hadoop 的分布式存储和计算能力,对这些大规模数据进行高效处理。通过数据分析算法,挖掘球员的潜在价值和特点,如球员的得分能力趋势、篮板球效率变化、不同位置球员的技术差异等。同时,借助先进的可视化技术,将分析结果以直观的图表、图形等形式展示出来。教练和球队管理层可以通过可视化界面清晰地了解球员的综合表现和发展态势,从而制 阅读详情

在二叉树方面停留了好长一段时间,各种资料:维基百科的定义、csdn的博客,java的api使用方法视频,最近突然发现我对数据结构的理解似乎开始有点质变的现象啦,开始能自己写出完整正确的代码啦,欣喜中,再接再厉,为自己加油!今天来贴一段二叉树递归实现先序遍历的完整代码。
      leetcode原题地址:https://oj.leetcode.com/problems/binary-tree-preorder-traversal/


  解题思路:
题目虽然是建议不用递归算法,因目前还没开始学习迭代的算法思想,所以先暂时用递归思想来解。
要实现先序遍历,所以完整程序包含如下几点
1、创建二叉树  public void createBinaryTree(TreeNode root){}
2、二叉树是由结点构成的(即TreeNode),所以创建个TreeNode 类,即 public  class TreeNode{}
3、从维基百科里了解到二叉树结点通常通过数组或者线性表来存储,我这里采用数组来存储结点,即ArrayList<Integer>,所以开头要import java.util.ArrayList;
4、前3个步骤完成之后,现在可以创建先序遍历方法啦,刚刚第3步说用ArrayList来存储二叉树结点,所以这么写先序遍历方法 public ArrayList<Integer> inordertraversal(TreeNode root){},该方法内的思想要体现出先序遍历的逻辑:访问根节点--》访问左孩子--》访问右孩子

package tree;

import java.util.ArrayList;

public class Preorder_traversal {
	private TreeNode root = null;
	private ArrayList<Integer> res;
	
	public Preorder_traversal(){
		root = new TreeNode(1,1);
	} 
	
	//创建二叉树
	public void createBinaryTree(TreeNode root){
		TreeNode newNodeB = new TreeNode(2,2);
		TreeNode newNodeC = new TreeNode(3,3);
		root.rightChild = newNodeB;
		root.rightChild.leftChild = newNodeC;
		
	}
	
	//二叉树由结点构成,所以需要创建TreeNode类
	public class TreeNode{
		private int key = 0;
		private int data = 0;
		private TreeNode leftChild = null;
		private TreeNode rightChild = null;
		
		public TreeNode(int key,int data){
			this.key =  key;
			this.data = data;
			this.leftChild = null;
			this.rightChild = null;
		}
	}
	
	//二叉树结点通常用数组或线性表进行存储,这里选择使用数组ArrayList才存储
	public ArrayList<Integer> preorder_Traversal(TreeNode root){
		res = new ArrayList<Integer>();
		helper(root,res);
		return res;
	}
	
	public void helper(TreeNode root,ArrayList<Integer> res){
		if (root == null)
			return ;
		else {
			//helper(root,res);
			res.add(root.data);
			helper(root.leftChild,res);
			helper(root.rightChild,res);
		}
	}
	
	public static void main(String[] args){
		Preorder_traversal bt = new Preorder_traversal();
		bt.createBinaryTree(bt.root);
		bt.preorder_Traversal(bt.root);
		int count = bt.res.size();
		for (int i=0;i<count;i++){
			System.out.print(bt.res.get(i)+" ");
		}
	}
}

打印结果如下:

1 2 3 





光模块封装工艺简介 光模块按照部件可以分为芯片、光器件、光模块三个层级;按照应用领域大概可分为电信应用、数通应用两个领域;按照内部器件的封装工艺可分为TO、Box、COB三大类。 但是,无论是哪种类型的光模块,其生产工艺基本上可以分为封装、测试两大块。   那什么叫做器件封装呢?我的理解器件封装就是利用胶水、焊料、机械、热量等手段把器件按照一定的先后次序结合形成一个整体的过程,就好像早上吃的煎饼,把面粉、鸡蛋、脆饼、烤肠、葱花等这些“器件”,按照一定的顺序,通过食用油、甜面酱、加热、卷起来等手段结合到一起,形成了美味的 阅读详情

相关推荐

[前沿技术] AMD FSR 1.0源码解析:EASU算法实现细节与优化策略

本文深入解析了AMD FSR 1.0技术的核心——EASU(边缘自适应空间升频)算法。通过剖析其源码,详细阐述了EASU如何利用12-tap采样窗口、基于Lanczos滤波器的多项式近似以及自适应的边缘检测机制,在无需AI模型的情况下实现高质量图像放大。文章重点揭示了其极致的GPU优化策略,包括寄存器利用、采样优化和避免动态分支,为理解高性能图形算法提供了绝佳范例。

docker7nomad的博客 540

Binary Tree Preorder Traversal 二叉树的先序@LeetCode

用递归和迭代求Pre-Order的经典题,什么时候要把In-Order, Post-Order, Level-Order 的遍历都写一遍,因为太经典了,最好能直接背下来。 package Level3; import java.util.ArrayList; import java.util.Stack; /** * Binary Tree Preorder Traversa

3716

配电网故障重构/孤岛划分/故障恢复

程序主要复现《基于GA_BFGS算法的配电网故障恢复性重构研究_郑海广》,采用matlab编程软件实现,依据网络结构和DG供电方式对配电网进行孤岛划分,将含有 DG 的配电网拓扑结构看成一个树,搭建成连通图模型,使得将孤岛的划分变成了求取最小生成树,以网损和开关开断次数作为目标,采用 IEEE33 节点配电网为算例,通过遗传算法寻优计算,从而得到最佳的重构方案。

zhangxd212489的博客 2500

Construct Binary Tree from Preorder and Inorder Traversal 从先序和中序重建二叉树@LeetCode

经典的题目,而且在实际中也有着用途,比如如何把一个二叉树序列化后通过网络传给另一台机器,我们就可以把二叉树以preorder和inorder的方式变成string传给另一台机器,另一台机器再重建二叉树。 package Level4; import Utility.TreeNode; /** * * Construct Binary Tree from Preorder and

3100

ptrade量化策略之ST股弱转强,回测年化115%

本策略的核心是精选ST股票,国九条过滤,防止直接暴雷退市,只做ST股票的弱转强

qq_29301281的博客 1788

模拟波束赋形 vs 数字波束赋形:5G天线设计中的成本与性能权衡

本文深入剖析了5G天线设计中模拟波束赋形与数字波束赋形的核心差异,重点探讨了二者在硬件成本、功耗、网络覆盖能力和频谱效率等方面的权衡。文章指出,模拟方案成本低但灵活性有限,数字方案性能强大但代价高昂,而混合波束赋形已成为主流折中方案。决策需紧密结合具体的部署场景、性能要求和总拥有成本进行综合考量。

weixin_28432777的博客 840

java学习笔记之图的遍历(广度优先搜索BFS)

不知道有没小伙伴们跟我一样,在刚开始通过网络资源学习编程时,拿到大牛们的代码,总是希望拿到的是可以打印出结果的代码,但不解的是,大神似乎都不喜欢出示完整代码(这或许就是英雄所见略同吧)。我呢,是名编程菜鸟,最近想通过大牛们的经典算法代码重温算法和数据结构。本文代码是来自alibaba的Leo-Yang,网搜了一段时间的BFS\DFS算法理解,个人最喜欢他的图解解读,太赞啦!这是他的原文http:/

往事如风,生如夏花 2682

Avellaneda & Stoikov’s market-making strategy AS模型的通俗理解篇(一)

δa, δb = bid/ask spread, symmetrical → δa=δb 也就是一段时间内,这个midprice 上蹿下跳的幅度计算,其实做市也就是一种网格,或者说类似布林带,我们经过计算在底部放买单,在高点放一个卖单,如果上下都成交了,那么仓位不变,你把利差赚了。一般来说在震荡行情中,很适合做市,特别是波动率不高情况下,我们通过AS的经典论文得到2个最关键公式,下面来解读一下这个公式的含义,如何在hummingbot 策略中如何设置这些参数。如果单边上涨,你就无货可卖,俗称卖飞了。

weixin_42480337的博客 1万+

Java学习笔记之二叉树的节点数、深度

在上篇博文《Java学习笔记之创建二叉树》后,我们现在来求增加二叉树的节点数、二叉树的深度的函数,以下代码中黄色背景是增加实现的代码,由于注释较多,我用绿色字体将自己解读的注解区分。 老样子还是先注明这句话:【本文的代码请见原创http://blog.youkuaiyun.com/wuwenxiang91322/article/details/12231657】 我是结合他的代码一行行通过注释解读

往事如风,生如夏花 2363

kettle连接达梦资源库数据库插件

kettle自定义插件plugin database plugin 达梦插件 dm插件

weixin_42122126的博客 2172

使用HART Server PC软件进行HART设备的组态、调试和分析的完整指南

HART协议是一种用于工业自动化中的双向通信协议,能够在4-20mA模拟信号的基础上叠加数字信号,从而实现设备的远程监控和管理。HART协议兼具模拟和数字通信的优点,被广泛应用于过程控制系统中。设备组态:通过软件可以对HART设备进行组态,配置设备参数。设备调试:支持设备的在线调试和故障诊断,方便快速解决问题。数据分析:提供设备运行数据的实时监控和历史数据分析功能。报表生成:支持生成各类报表,便于数据记录和管理。

qq_38334677的博客 2472

java学习笔记之创建二叉树

算法和数据结构底子薄弱,最近开始结合经典的算法题重新学习。本文的代码请见原创http://blog.youkuaiyun.com/wuwenxiang91322/article/details/12231657,我是结合他的代码一行行通过注释解读自己的理解,从中温习java的语法结构及数据结构、算法的思想。如有错误,望批评指正~ package tree; import java.util.S

往事如风,生如夏花 725

【Bug已解决】Codex Desktop 更新后无法启动/闪退解决方案

方案适用场景推荐指数清理本地缓存重启最常见、最应优先尝试的方案⭐⭐⭐⭐⭐完全卸载重装缓存清理无效时的进阶方案⭐⭐⭐⭐详细日志定位崩溃环节需要精确诊断问题原因⭐⭐⭐⭐锁定旧稳定版本确认是特定版本缺陷时的过渡方案⭐⭐⭐反馈官方支持团队自助方式无效时的最终途径⭐⭐⭐⭐Codex Desktop 更新后无法启动/闪退的本质通常是新版本程序在启动时读取到了旧版本遗留的、格式不兼容的本地缓存或配置数据,导致启动流程中途崩溃。

一键难忘的博客 6289

Binary Tree Inorder Traversal @ LeetCode

看了好久的维基百科关于二叉树的解说、csdn相关博文的理解,及stone老师的帮忙下,终于写出能够打印出结果的完整程序啦。本文递归相关代码来自http://blog.youkuaiyun.com/linhuanmars/article/details/20187257 支持原创。其它部分是自己在stone老师的帮忙下理解后完整调试出的。 先贴leetcode的原题链接地址:https://oj.le

往事如风,生如夏花 678

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Search insert position @leetcode

leetcode原题地址:https://oj.leetcode.com/problems/search-insert-position/        原题内容如下: Given a sorted array and a target value, return the index if the target is found. If not, return the index wher

往事如风,生如夏花 558

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Binary Tree Postorder Traversal @leetcode

leetcode 原题地址:https://oj.leetcode.com/problems/binary-tree-postorder-traversal/ 后序遍历思想:访问左孩子--》访问右孩子--》访问根节点 递归思想的完整代码如下: package tree; import java.util.ArrayList; public class Postorder_trav

往事如风,生如夏花 486

蓝牙模块HM-10手册

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

Search for a Range @leetcode

leetcode原题的地址链接:https://oj.leetcode.com/problems/search-for-a-range/ 题目内容如下: Given a sorted array of integers, find the starting and ending position of a given target value. Your algorithm's runt

往事如风,生如夏花 484

Count and Say@leetcode

leetcode原题的地址链接:https://oj.leetcode.com/problems/count-and-say/ 题目内容如下: The count-and-say sequence is the sequence of integers beginning as follows: 1, 11, 21, 1211, 111221, ... 1 is rea

往事如风,生如夏花 459

InnoDB 内存结构总览:Change Buffer、AHI 与 Log Buffer

本文系统梳理InnoDB内存结构中的ChangeBuffer、Adaptive Hash Index(AHI)与LogBuffer。ChangeBuffer缓存二级索引页不在内存时的变更,减少随机IO,仅在页加载时合并;聚簇索引修改立即执行,因数据本身不可延后。AHI基于高频等值查询自动构建哈希索引,加速定位,仅支持等值操作。LogBuffer为redo log内存缓冲,配合磁盘日志实现崩溃恢复。三者均服务于性能优化,其中ChangeBuffer与AHI共享BufferPool空间,而LogBuffer独立

bksczm的博客 295

信创环境下PageOffice文档控件适配与实践

信创适配做到文档控件这一层,拼的已经不是"有没有国产版本",而是同一个功能在两类终端上是否真的等价。等价的标准很具体:同一次点击能得到同样的结果,同一份公文能得到同样的版式,同一个项目不需要维护两套代码。这背后是三件并不轻松的工作:服务端用一套接口同时支撑两类终端,客户端把两种系统与四种芯片的安装包分发清楚,文档内核层由产品侧跟着 WPS 的版本走。浏览器这一层的压力,则被收进了产品自己的窗口里——升级节奏由产品掌握,不再交给运气。

zi_wu_xian的专栏 325

V8 机制、手写核心函数与 TypeScript 类型体操

或固定初始化(如数组先定长、对象先给全字段)保持类型与形状稳定;这些都比"换框架"更基础。只能处理纯数据(丢函数、Date、RegExp、循环引用报错)。生产级深拷贝要处理:原始值短路、循环引用、V8(Chrome / Node 的 JS 引擎)不是"解释一行跑一行"那么简单,它用。图:V8 执行流程——解释执行 + 热点优化,优化失败会 Deopt 回退。JS 内存自动管理,但"自动"不等于"不会漏"。是"固定间隔最多执行一次"。手写 Promise 是"懂异步"的试金石。是"停下后才执行最后一次",

qq_38468358的博客 350

第三篇 第 6 课

前置:第三篇第 1 课(stdx 引入),第二篇第 1 课(std.regex)。环境:仓颉 SDK 1.2.0。本文所有代码与输出均逐行实测。

weixin_41618057的博客 513

【从零理解 Spring AI · 12】MCP 的两种角色:做客户端还是做服务端

上一篇讲了 MCP 的概念:标准协议、三大角色、M+N 替代 M×N。

nice_lcj520的博客 532

Java 集合容器高频面试题全解:HashMap 树化阈值、1.7 死循环与 ConcurrentHashMap 演进(2026 招聘 JD 真题复盘)

HashMap 树化阈值 8 的泊松分布依据、退化阈值 6 的防抖设计、JDK 1.7 头插成环死循环的排查与修复、1.8 尾插后为何仍线程不安全、ConcurrentHashMap 放弃分段锁的原因与 ForwardingNode 协作扩容、computeIfAbsent 死锁陷阱、大集合找重复的场景题选型,附三层追问链自测。题目来源为 38 期公开招聘 JD 样本与字节、拼多多、建行、美团、快手公开面经。

蒙眼过河 416

spdlog 同步日志库使用详解

spdlog是一个轻量级 C++ 日志库,支持同步日志、异步日志、多线程日志、日志文件轮转和自定义日志格式。对于嵌入式 Linux 应用开发,我建议先使用。它可以帮我们完成:日志级别过滤。时间戳和线程 ID 输出。日志格式化。终端和文件输出。多线程安全写入。日志文件按大小或时间轮转。我们不需要自己实现互斥锁、文件写入、日志格式化和轮转等底层功能。

zengjiajun2006的博客 1109

Java 多态 学习笔记

多态是面向对象编程的重要特性,指同一操作作用于不同对象时产生不同行为。其核心在于“父类引用指向子类对象”,结合方法重写实现运行时动态绑定。多态使代码更灵活、可扩展,如用Person p = new Student();统一处理各类人员注册,无需修改调用逻辑。但多态无法直接调用子类特有方法,需通过instanceof判断并强制转换。编译时看左边(类型),运行时看右边(实际对象),实现解耦与维护便利。

AA_AA114514的博客 367
上一篇: Binary Tree Inorder Traversal @ LeetCode
下一篇: Binary Tree Postorder Traversal @leetcode
samnancy
博客等级 码龄19年 4粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值