N갈래 나무의 앞, 뒷, 층층이 두루 다니다

12766 단어 LeetCode

N갈래 나무의 앞 순서를 두루 훑어보다


LeetCode 링크:https://leetcode-cn.com/problems/n-ary-tree-preorder-traversal/차례로 돌아가다
class Solution {
    List<Integer> list = new ArrayList();
    public List<Integer> preorder(Node root) {
        if(root == null) return list;
        list.add(root.val);
        for(Node node: root.children){
            preorder(node);
        }
        return list;
    }
}

교체하다
class Solution {
    public List<Integer> preorder(Node root) {
        List<Integer> list = new ArrayList<>();
        Stack<Node> stack = new Stack<>();
        // 
        if(root == null) return list;
        // 
        stack.push(root);
        while(! stack.isEmpty()){
            Node node = stack.pop();
            list.add(node.val);  // 
            // , , 
            for(int i=node.children.size()-1 ; i>=0; i--){
                stack.push(node.children.get(i));
            }
        }
        return list;
    }
}

N갈래 나무의 뒷부분을 두루 훑어보다


LeetCode 링크:https://leetcode-cn.com/problems/n-ary-tree-postorder-traversal/차례로 돌아가다
class Solution {
    List<Integer> list = new ArrayList<>();
    public List<Integer> postorder(Node root) {
        if(root == null) return list;
        for(Node node: root.children){
            postorder(node);
        }
        list.add(root.val);
        return list;
    }
}

교체하다
class Solution {
    public List<Integer> postorder(Node root) {
        LinkedList<Integer> list = new LinkedList<>();
        Stack<Node> stack = new Stack<>();
        if(root == null) return list;
        stack.add(root);
        while(! stack.isEmpty()){
            Node node = stack.pop();
            // 
            list.addFirst(node.val);
            for(Node child : node.children){
                stack.add(child);
            }
        }
        return list;
    }
}

좋은 웹페이지 즐겨찾기