package com.heu.wsq.leetcode.tree;
import java.util.ArrayList;
import java.util.Deque;
import java.util.LinkedList;
import java.util.List;
/**
* 589. N叉树的前序遍历
* @author wsq
* @date 2020/12/21
* 给定一个 N 叉树,返回其节点值的前序遍历。
* 例如,给定一个 3叉树 :
*
* 返回其前序遍历: [1,3,5,6,2,4]。
*
* 题目地址:https://leetcode-cn.com/problems/n-ary-tree-preorder-traversal/
*/
public class Preorder {
/**
* 使用栈结构维护深度优先遍历的信息
* @param root
* @return
*/
public List<Integer> preorder(Node root){
List<Integer> ans = new ArrayList<>();
Deque<Node> stack = new LinkedList<>();
stack.push(root);
while (!stack.isEmpty()){
Node pop = stack.pop();
ans.add(pop.val);
if (!pop.children.isEmpty()){
for (int i = pop.children.size() - 1; i >= 0; i--) {
stack.push(pop.children.get(i));
}
}
}
return ans;
}
}
589. N叉树的前序遍历(深度优先遍历)
最新推荐文章于 2022-02-19 18:16:24 发布