590. N叉树的后序遍历

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

例如,给定一个 3叉树 :


narytreeexample.png

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

说明: 递归法很简单,你可以使用迭代法完成此题吗?
题解:此题与589同源,589是前序,故先入根节点,590后序最后入根节点即可。

/*
// 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) {
        List<Integer>ans = new ArrayList<>();
        if(root == null)
            return ans;
        post(root,ans);
        return ans;
    }
    public void post(Node root,List<Integer>ans){
        if (root == null)
            return;
        for(Node node : root.children){
            post(node,ans);
        }
        ans.add(root.val);
    }
}
2.迭代:

public List<Integer> postorder2(Node root) {
    List<Integer> res = new ArrayList<>();
    if (root == null) return res;
    //前指针
    Node pre = null;
    Stack<Node> stack = new Stack<>();
    stack.push(root);
    while (!stack.isEmpty()) {
        Node cur = stack.peek();
        if ((cur.children.size() == 0) || (pre != null && cur.children.contains(pre))) {
            //加入结果集
            res.add(cur.val);
            stack.pop();
            //更新pre指针
            pre = cur;
        } else {
            //继续压栈,注意压栈是从右往左
            List<Node> nodeList = cur.children;
            for (int i = nodeList.size() - 1; i >= 0; i--) {
                stack.push(nodeList.get(i));
            }
        }
    }
    return res;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 题目描述 给定一个 N 叉树,返回其节点值的后序遍历。相关话题: 树    难度: 简单 例如,给定一个 3叉树 ...
    topshi阅读 2,350评论 0 2
  • 给定一个 N 叉树,返回其节点值的后序遍历。N叉树的定义如下 例如 给定一个 3叉树 : 返回其后序遍历: [5,...
    闭门造折阅读 3,038评论 0 0
  • 题目 难度:★★☆☆☆类型:树 给定一个 N 叉树,返回其节点值的后序遍历。 例如,给定一个 3叉树 : 返回其后...
    玖月晴阅读 4,592评论 0 0
  • 前言 二叉树的前序遍历,中序遍历,后序遍历是面试中常常考察的基本算法,关于它的概念这里不再赘述了,还不了解的同学可...
    Jesse1995阅读 16,712评论 0 3
  • 没有长大的月亮 咀嚼着玉兔的药丸 桂树 把它的枝 伸向整个天空 我折下其中一只 没有名字 失恋的姑娘 要我摘下无果...
    姬皮尔伯格阅读 1,234评论 0 1

友情链接更多精彩内容