LeetCode 590. N叉樹的後序遍歷(N-ary Tree Postorder Traversal)
阿新 • • 發佈:2019-05-12
link pill child val uri leetcode emp conda linked
590. N叉樹的後序遍歷
590. N-ary Tree Postorder Traversal
題目描述
給定一個 N 叉樹,返回其節點值的後序遍歷。
LeetCode590. N-ary Tree Postorder Traversal
例如,給定一個 3 叉樹:
返回其後序遍歷: [5,6,3,2,4,1].
說明: 遞歸法很簡單,你可以使用叠代法完成此題嗎?
Java 實現
Iterative Solution
import java.util.LinkedList; import java.util.List; import java.util.Stack; 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> result = new LinkedList<>(); if (root == null) { return result; } Stack<Node> stack = new Stack<>(); stack.push(root); while (!stack.isEmpty()) { Node node = stack.pop(); for (Node child:node.children){ stack.push(child); } result.add(0, node.val); } return result; } }
Recursive Solution
import java.util.LinkedList; import java.util.List; class Node { public int val; public List<Node> children; public Node() { } public Node(int _val, List<Node> _children) { val = _val; children = _children; } } class Solution { List<Integer> result = new LinkedList<>(); public List<Integer> postorder(Node root) { if (root == null) { return result; } List<Node> node = root.children; for (int i = 0; i < node.size(); i++) { postorder(node.get(i)); } result.add(root.val); return result; } }
相似題目
- 144. 二叉樹的前序遍歷
- 429. N叉樹的層序遍歷
- 590. N叉樹的後序遍歷
參考資料
- https://leetcode-cn.com/problems/n-ary-tree-postorder-traversal/
- https://leetcode.com/problems/n-ary-tree-postorder-traversal/
LeetCode 590. N叉樹的後序遍歷(N-ary Tree Postorder Traversal)