当前位置: 首页 > 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);
    }
}

相关文章:

  • windows 安装Linux子系统 Ubuntu 并配置python3
  • 你需要知道DDD基本知识
  • GoAccess实时分析Nginx日志
  • Python批量统计pdf中“中文”字符的个数
  • C 初级学习笔记(基础)
  • Python之列表
  • java实现力扣计算器
  • Nginx 解决内容安全策略CSP(Content-Security-Policy)配置方式
  • Leetcode55. 跳跃游戏
  • 基于若依ruoyi-nbcio增加flowable流程待办消息的提醒,并提供右上角的红字数字提醒(八)
  • StartUML 5.1.0文本框中文自动换行和排版问题解决
  • Python:Django框架的Hello wrold示例
  • matlab读写json文件
  • unity自己对象池的使用
  • CHAPTER 10: DESIGN A NOTIFICATION SYSTEM
  • C/C++统计满足条件的4位数个数 2023年5月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析
  • python装13的一些写法
  • flume安装及实战
  • 数据库选型参考
  • 数据分享|R语言生态学种群空间点格局分析:聚类泊松点过程对植物、蚂蚁巢穴分布数据可视化...
  • 中国旅游日主题月期间,东航将准备超51.9万套特惠机票
  • 习近平致电祝贺诺沃亚当选连任厄瓜多尔总统
  • 深化应用型人才培养,这所高校聘任行业企业专家深度参与专业设置
  • 美军一天内对也门发动50余次袭击,胡塞武装称再次击落美军无人机
  • 纪念沈渭滨︱在恩师沈渭滨老师指导下走上学术研究之路
  • 谷雨播种正当时,上海黄道婆纪念公园种下“都市棉田”