当前位置: 首页 > news >正文

二叉树的前序遍历-java两种方式-力扣144

一、题目描述

给你二叉树的根节点 root ,返回它节点值的 前序 遍历。

示例 1:

输入:root = [1,null,2,3]

输出:[1,2,3]

示例 2:

输入:root = []

输出:[]

示例 3:

输入:root = [1]

输出:[1]

示例 4:

输入:root = [1,2]

输出:[1,2]

示例 5:

输入:root = [1,null,2]

输出:[1,2]

来源:力扣(LeetCode)

链接:https://leetcode.cn/problems/binary-tree-preorder-traversal

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

二、运行结果

递归方式运行结果:

非递归方式运行结果(内存好像用得更多了.org):

三、解题思路

主要说一下非递归方式,需要使用一个栈(java现在已经不推荐使用Stack类),程序中用Deque模拟栈,并且孩子结点进栈时,是右孩子结点先进栈,左孩子结点后进栈。

四、AC代码

递归方式代码:

/*** Definition for a binary tree node.* 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;*     }* }*/
class Solution {List<Integer> ans = new ArrayList<>();public List<Integer> preorderTraversal(TreeNode root) {if(root == null) return ans;// 递归方式ans.add(root.val);preorderTraversal(root.left);preorderTraversal(root.right);return ans;}
}

非递归方式代码:

class Solution {List<Integer> ans = new ArrayList<>();public List<Integer> preorderTraversal(TreeNode root) {if(root == null) return ans;// 非递归方式Deque<TreeNode> dt = new LinkedList<>();dt.offer(root);while(!dt.isEmpty()){TreeNode tmp = dt.removeLast();ans.add(tmp.val);if(tmp.right != null) dt.offer(tmp.right);if(tmp.left != null) dt.offer(tmp.left);}return ans;}
}

http://www.lryc.cn/news/22127.html

相关文章:

  • 浅析 Redis 主从同步与故障转移原理
  • MyBatis学习笔记(七) —— 特殊SQL的执行
  • 计算机组成原理(1)--计算机系统概论
  • jdbc模板的基本使用
  • JPA 注解及主键生成策略使用指南
  • 【C语言刷题】找单身狗、模拟实现atoi
  • 前端必会面试题指南
  • C 语言—— 数组
  • Oracle-RAC集群主机重启问题分析
  • Python每日一练(20230227)
  • Scratch少儿编程案例-算法练习-存款收益计算
  • 【Linux驱动开发100问】Linux驱动开发工程师在面试中常被问到的问题汇总
  • 每日学术速递2.27
  • 【数据库系统概论】基础知识总结
  • 简单移动平均在量化中的应用(附Python实战代码)
  • ChatGPT提高你日常工作的五个特点,以及如何使用它来提高代码质量
  • spark datasourceV1和v2
  • 10种聚类算法的完整python操作示例
  • 构建合作伙伴生态系统刻不容缓
  • 剑指 Offer 55 - I. 二叉树的深度(java解题)
  • 威胁行为者将旧漏洞武器化以发起勒索软件攻击
  • 2023北京健博会/第十届中国国际大健康产博览会
  • Python学习笔记之环境搭建
  • 死锁的总结
  • 强化学习RL 01~ 数学基础
  • Java的运算符
  • 扫地机器人(蓝桥杯C/C++)
  • 如何理解API?API 是如何工作的?(5分钟诠释)
  • PAT--1111 对称日
  • 前端纯函数和副作用概念,且在react上的体现详解