给定一个 N 叉树,返回其节点值的 前序遍历 。

N 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例)。

进阶:

递归法很简单,你可以使用迭代法完成此题吗?

示例 1:

输入:root = [1,null,3,2,4,null,5,6]
输出:[1,3,5,6,2,4]

解法一:递归

 public List<Integer> preorder(Node root) {
            List<Integer> res = new ArrayList<Integer>();
            npreorder(root,res);
            return res;
        }
     void npreorder(Node root,List<Integer> res) {
         if(root == null)
             return ;
         res.add(root.val);
         for(Node node:root.children) {
             npreorder(node,res);
         }
     }

解法二:迭代

 public List<Integer> preorder(Node root) {
            List<Integer> res = new ArrayList<Integer>();
            Deque<Node> stack = new ArrayDeque<Node>();
            if(root==null)
                return res;
            stack.add(root);
            while(!stack.isEmpty()) {
                Node node = stack.removeLast();
                res.add(node.val);
                for(int i=node.children.size()-1;i>=0;i--) {
                    stack.addLast(node.children.get(i));
                }
            }
            return res;
        }

 从递归到迭代并不容易

解决几个痛点:怎么存储现有的参数root-----使用了栈,迭代怎么保证存储现有的值------for 存储所有节点,同时使得再一次循环时能够使用值-------更新了root值在再一次迭代后

相关文章:

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