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

  • 相关阅读:
    Linux驱动之Framebuffer子系统基础知识
    C/C++语言常见面试题汇总
    转载-Linux驱动面试题汇总
    nginx服务在html中嵌入php代码无法显示问题
    关于strsep函数以及联想
    system替代函数
    system问题总结记录
    C语言-判断文件是否存在
    vue常见表单信息收集
    sublime 设置格式化快捷键
  • 原文地址:https://www.cnblogs.com/xiaoming521/p/14863921.html
Copyright © 2011-2022 走看看