首页 > 技术文章 > [树]LeetCode589 N叉树的前序遍历

ethereal-n 2022-03-10 23:03 原文

LeetCode N叉树的前序遍历


前言:树的前中后序遍历已经是很经典的题目的,要么递归要么迭代,不过还是比较习惯于递归的写法


TITLE

给定一个 n 叉树的根节点 root ,返回 其节点值的 前序遍历 。
n 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔。

思路:

树形结构的前序遍历:N树的节点包含了 子节点链表,(节点的数据结构在题目中给出),将节点设为参数遍历即可N叉树不存在中序的情况,所以将序列记录在答案列表(LIST)中的操作在递归的入口之前就是前序,在递归的入口之后就是后序,很简单的

前序遍历
class Solution {
    static List<Integer> ans =null;
    public List<Integer> preorder(Node root) {
        ans = new ArrayList<>();
        return dfs(root);
    }
    private List<Integer> dfs(Node root){
        if(root==null)return ans;
        if(root.children==null){
            ans.add(root.val);
            return ans;
        }
        ans.add(root.val);
        for(Node node:root.children){
            dfs(node);
        }
        return ans;
    }

推荐阅读