zoukankan      html  css  js  c++  java
  • 589. N 叉树的前序遍历

    给定一个 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值在再一次迭代后

  • 相关阅读:
    简时——alpha冲刺任务九(5.7)
    简时——alpha冲刺任务八(5.6)
    SE_Work4_软件案例分析
    SE_Work3_结队项目
    随机生成器——起源
    SE_Work2_交点个数
    SE_Work1_阅读构建之法&项目管理实践
    SE_Work0_回顾与展望
    OO_Unit4_UML模型化设计
    OO_Unit3_JML规格模式
  • 原文地址:https://www.cnblogs.com/xiaoming521/p/14863921.html
Copyright © 2011-2022 走看看