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

【LeetCode-简单题】589. N 叉树的前序遍历

文章目录

    • 题目
    • 方法一:单循环栈做法
    • 方法二:递归

题目

在这里插入图片描述

方法一:单循环栈做法

关键在于子节点的入栈顺序,决定了子节点的出栈顺序,
因为是前序遍历 所以压栈顺序先让右边的入栈 依次往左 这样左边的节点会在栈顶 这样下次优先出栈的是左边的元素 满足前序遍历

 for(int i = root.children.size()-1 ; i>=0 ;i--)stack.push(root.children.get(i));
class Solution {public List<Integer> preorder(Node root) {if(root==null) return new ArrayList<>();List<Integer> res = new ArrayList<>();Deque<Node> stack = new LinkedList<>();stack.push(root);while(!stack.isEmpty()){root  = stack.pop();res.add(root.val);//因为是前序遍历  所以压栈顺序先让右边的入栈  依次往左  这样左边的节点会在栈顶 这样下次优先出栈的是左边的元素 满足前序遍历for(int i = root.children.size()-1 ; i>=0 ;i--)stack.push(root.children.get(i));}return res;}
}

方法二:递归

原理和二叉树的前序遍历一样 相当于把左右孩子 改成孩子集合了 孩子变多了而已,核心还是 根左右(先跟 再左孩子 在右孩子)

class Solution {List<Integer> res = new ArrayList<>();public List<Integer> preorder(Node root) {dfs(root);return res;}public void dfs(Node root){if(root == null) return;res.add(root.val);//前for(Node node : root.children)//中中中中中dfs(node);}
}
http://www.lryc.cn/news/174275.html

相关文章:

  • Linphone3.5.2 ARM RV1109音视频对讲开发记录
  • Unity用相机实现的镜子效果
  • 计算机网络分类
  • AI AIgents时代 - (三.) AutoGPT和AgentGPT
  • Jmeter接口自动化和Python接口自动化,如何选择?
  • Sqilte3初步教程
  • 详解Python中的json库
  • 【Spring Boot】Spring Boot源码解读与原理剖析
  • C++学习(1)
  • 机器人如何有效采摘苹果?
  • C# OpenCvSharp Yolov8 Detect 目标检测
  • rust数组
  • ubuntu | 安装NVIDIA套件:驱动、CUDA、cuDNN
  • JAVA学习笔记
  • 车载软件架构 —— 持续集成持续交付
  • c++ 二元运算符重载, 以加法为例
  • 基于 SpringBoot+Vue的电影影城管理系统,附源码,数据库
  • Docker实战技巧(二):Kubernetes基础操作实战
  • 计算机视觉与深度学习-循环神经网络与注意力机制-Attention(注意力机制)-【北邮鲁鹏】
  • Centos7安装wps无法打开及字体缺失的问题解决
  • 华为OD机试真题-会议接待-2023年OD统一考试(B卷)
  • mysql explain学习记录
  • 电压放大电路的作用有哪些(电压放大器)
  • 编译opencv-3.4.5 [交叉编译]
  • Canal 实现MySQL与Elasticsearch7数据同步
  • 网络安全攻防对抗之隐藏通信隧道技术整理
  • 读书笔记:多Transformer的双向编码器表示法(Bert)-2
  • Python 基于PyCharm断点调试
  • spring security auth2.0实现
  • MySQL(6)LOCK和MVCC