Skip to content

Latest commit

 

History

History
54 lines (40 loc) · 1.58 KB

590. N 叉树的后序遍历.md

File metadata and controls

54 lines (40 loc) · 1.58 KB

590. N 叉树的后序遍历

解题思路

  • 定义节点类: 首先定义了一个节点类 Node,每个节点包含一个整数值 val 和一个子节点列表 children。

  • 实现后序遍历方法: 在 Solution 类中,定义了一个 postorder 方法用于执行后序遍历。在后序遍历中,需要先遍历所有子节点,然后才遍历当前节点。所以,在 traverse 方法中,首先检查节点是否为空,如果为空则直接返回。然后遍历当前节点的所有子节点,对每个子节点递归调用 traverse 方法,以实现子树的后序遍历。最后将当前节点的值添加到结果列表中。

  • 结果返回: 在 postorder 方法中,调用 traverse 方法进行遍历,然后返回结果列表,即为多叉树的后序遍历结果。

/*
// 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 {
    List<Integer> res = new ArrayList<>();
    public List<Integer> postorder(Node root) {
                // 同二叉树的先序遍历  先访问根节点 然后一次访问孩子节点

        traverse(root);
        return res;
    }

    void traverse(Node root){
        if(root == null){
            return;
        }

    // 后序遍历 先将所有子节点全部遍历一遍
        for(Node node:root.children){
            traverse(node);
        }
        res.add(root.val);
    }
}