2022年03月12日 力扣每日一题

题目

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

n 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例)。

 

示例 1:

输入:root = [1,null,3,2,4,null,5,6]
输出:[5,6,3,2,4,1]

示例 2:

输入:root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]
输出:[2,6,14,11,7,3,12,8,4,13,9,10,5,1]

 

提示:

  • 节点总数在范围 [0, 104]
  • 0 <= Node.val <= 104
  • n 叉树的高度小于或等于 1000

 

进阶:递归法很简单,你可以使用迭代法完成此题吗?

Related Topics
  • 深度优先搜索
  • 个人解法

    思路:

      这题简单,只需要递归做就好了,对于每一个节点,先存叶子节点,然后存根节点

    {% tabs categories%}

    import java.util.ArrayList;
    import java.util.List;
    
    /*
    // Definition for a Node.
    class Node {
        public int val;
        public List<Node> children;
    
        public Node() {}
    
        public Node(int _val) {
            val = _val;
        }
    
        public Node(int _val, List<Node> _children) {
            val = _val;
            children = _children;
        }
    };
    */
    
    class Solution {
        public List<Integer> postorder(Node root) {
            list = new ArrayList<>();
            dfs(root);
            return list;
        }
        List<Integer> list;
        private void dfs(Node root) {
            if (root == null) {
                return;
            }
            if (root.children.size() == 0) {
                list.add(root.val);
                return;
            }
            for (Node node : root.children) {
                dfs(node);
            }
            list.add(root.val);
        }
    }
    
    """
    # Definition for a Node.
    class Node:
        def __init__(self, val=None, children=None):
            self.val = val
            self.children = children
    """
    from typing import List
    
    
    class Solution:
        def postorder(self, root: 'Node') -> List[int]:
            arr = []
    
            def dfs(root1: 'Node'):
                if root1 is None:
                    return
                if len(root1.children)==0:
                    arr.append(root1.val)
                    return
                for node in root1.children:
                    dfs(node)
                arr.append(root1.val)
            dfs(root)
            return arr
    

    {% endtabs %}