1. 程式人生 > 其它 >589. N 叉樹的前序遍歷

589. N 叉樹的前序遍歷

給定一個 N 叉樹,返回其節點值的 前序遍歷 。

N 叉樹 在輸入中按層序遍歷進行序列化表示,每組子節點由空值 null 分隔(請參見示例)。

進階:

遞迴法很簡單,你可以使用迭代法完成此題嗎?

來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/n-ary-tree-preorder-traversal
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Stack;

class Solution {
    public List<Integer> preorder(Node root) {
        if (root == null) {
            return Collections.emptyList();
        }

        List<Integer> ret = new ArrayList<>();

        Stack<Node> stack = new Stack<>();

        stack.push(root);

        while (!stack.isEmpty()) {
            Node pop = stack.pop();
            ret.add(pop.val);

            List<Node> children = pop.children == null ? Collections.emptyList() : pop.children;

            for (int i = children.size() - 1; i >= 0; --i) {
                stack.push(children.get(i));
            }
        }

        return ret;
    }
}

class Node {
    public int val;
    public List<Node> children;

    public Node() {
    }

    public Node(int _val) {
        val = _val;
    }

    public Node(int _val, List<Node> _children) {
        val = _val;
        children = _children;
    }
};
心之所向,素履以往 生如逆旅,一葦以航