• 【每日一题-leetcode】590.N叉数的后序遍历


    590.N叉数的后序遍历

    1. N叉树的后序遍历

    难度简单58

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

    例如,给定一个 3叉树 :

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

    1.递归

    时间复杂度:O(n)

    空间复杂度:O(n)

      LinkedList<Integer> linkedList = new LinkedList();
            //1.一个LikedList链表存储数值
            //2.递归调用
            // a.如果根节点为null 返回
            // b.依次遍历根节点的孩子节点 
            public List<Integer> postorder(Node root) {
                recur(root);
                return linkedList;
            }
        
            public void recur(Node root){
                if(root == null) return;
                for(Node node : root.children){
                    recur(node);
                }
                linkedList.add(root.val);
            }
    

    2.栈迭代

    时间复杂度:O(n)

    空间复杂度:O(n)

    
    
    // 1.N叉树的后序遍历 左右根 
    // 2.用一个链表存储数据 每次添加首节点 依次往后移动
    // 3.将root节点push到栈中 遍历左右子节点。如果不为null 继续
    public List<Integer> postorder(Node root) {
        if(root == null) return new ArrayList();
        LinkedList<Integer> linkedList = new LinkedList();
        Stack<Node> stack = new Stack();
        stack.push(root);
        while(!stack.isEmpty()){
            root = stack.pop();
            linkedList.offerFirst(root.val);//先进排在最后
            for(Node node : root.children){
                stack.push(node);
            }
        }
        return linkedList;
    }
    
  • 相关阅读:
    交换两个变量的值的若干种方法
    排序算法之冒泡排序
    JAVA宇宙无敌复习资料
    HTML中Float和元素定位
    HTML盒子模型
    HTML表单
    HTML中Css补充资料
    HTML中Css详细介绍
    HTML表格及框架介绍
    HTML网页的基本结构及基本功能
  • 原文地址:https://www.cnblogs.com/qxlxi/p/12860646.html
Copyright © 2020-2023  润新知