题目来源:

https://leetcode-cn.com/problems/n-ary-tree-preorder-traversal/

题目描述: 

LeetCode589.N叉树的前序遍历

递归法: 先输出当前节点的值,再从左孩子到右孩子进行递归

/*
class Node {
    public int val;
    public List<Node> children;
    public Node() {}
    public Node(int _val,List<Node> _children) {
        val = _val;
        children = _children;
    }
};
*/
class Solution {

    List<Integer> list = new ArrayList();

    public List<Integer> preorder(Node root) {
        if (root != null) {
            list.add(root.val);
            for (Node node : root.children) {
                preorder(node);
            }
        }
        return list;
    }
}

迭代法:

迭代法用栈来存节点,依次取栈顶节点的数据并出栈。要注意的是,此时存孩子节点的顺序应该从右到左,因为先进后出。

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

 

相关文章:

  • 2022-01-11
  • 2021-11-24
  • 2022-12-23
  • 2021-12-07
  • 2021-04-24
  • 2021-07-08
  • 2021-12-23
猜你喜欢
  • 2021-09-09
  • 2021-05-26
  • 2022-02-03
  • 2021-06-17
  • 2022-12-23
  • 2021-05-06
  • 2021-07-30
相关资源
相似解决方案