LeetCode:N叉树的后序遍历【590】

LeetCode:N叉树的后序遍历【590】

题目描述

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

例如,给定一个 3叉树 :

 

返回其后序遍历: [5,6,3,2,4,1].

题目分析

  这道题有好几个标签,比如N叉树、递归算法、栈等等。我们使用栈来解决这个问题。

  首先我们都知道,栈顶元素一般都是根元素,弹出根元素,加入根元素的子集后,位于栈顶的是根元素的最右子节点,栈低的是根元素的最左子节点

  如果我们按照这个顺序打印的话,输出的是[1,4,2,3,6,5]。如果我们把这个结果反转后就是[5,6,3,2,4,1]就是结果。

Java题解

/*
// Definition for a Node.
class Node {
    public int val;
    public List<Node> children;

    public Node() {}

    public Node(int _val,List<Node> _children) {
        val = _val;
        children = _children;
    }
};
*/
class Solution {
   public List<Integer> postorder(Node root) {
        Stack<Node> stack = new Stack<>();
        List<Integer> ans = new ArrayList<>();
        if(root==null)
            return ans;
        stack.push(root);
        while (!stack.isEmpty())
        {
            Node node = stack.pop();
            for(Node tmpNode:node.children)
                stack.push(tmpNode);
            ans.add(node.val);
        }
        Collections.reverse(ans);
        return ans ;
    }
}

 

posted @ 2018-11-13 16:21  子烁爱学习  阅读(302)  评论(0编辑  收藏  举报