首页 > 其他 > 详细

589. N 叉树的前序遍历

时间:2021-06-08 20:24:33      阅读:22      评论:0      收藏:0      [点我收藏+]

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

589. N 叉树的前序遍历

原文:https://www.cnblogs.com/xiaoming521/p/14863921.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!