给定一个 n 叉树的根节点 root ,返回 其节点值的 后序遍历 。
n 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例)。
示例 1:
输入:root = [1,null,3,2,4,null,5,6]
输出:[1,3,5,6,2,4]
示例 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]
输出:[1,2,3,6,7,11,14,4,8,12,5,9,13,10]
二叉树的后序遍历
/*** 二叉树的后序遍历** @param root* @return*/public List<Integer> postorder(TreeNode root) {ArrayList<Integer> result = new ArrayList<>();postOrder(root, result);return result;}/*** 深度优先-递归后序遍历:先左子树,然后右子树,最后根节点,* @param node*/public void postOrder(TreeNode node, ArrayList<Integer> result) {if (node == null) {return;}// 继续遍历左子树postOrder(node.left, result);// 继续遍历右子树postOrder(node.right, result);// 根节点result.add(node.val);}
那么 N 叉树的后序遍历也是类似的
/*** N叉树的后序遍历** @param root* @return*/public List<Integer> postorder(Node root) {ArrayList<Integer> result = new ArrayList<>();postOrder(root, result);return result;}/*** 深度优先-递归后序遍历:先左子树,然后右子树,最后根节点,* @param node*/public void postOrder(Node node, ArrayList<Integer> result) {if (node == null) {return;}// 继续所有子树for (Node child : node.children) {postOrder(child, result);}// 根节点result.add(node.val);}
