LeetCode:N叉樹的後序遍歷【590】
阿新 • • 發佈:2018-11-13
LeetCode:N叉樹的後序遍歷【590】
題目描述
給定一個 N 叉樹,返回其節點值的後序遍歷。
例如,給定一個 3叉樹
:
返回其後序遍歷: [5,6,3,2,4,1]
.
題目分析
這道題有好幾個標籤,比如N叉樹、遞迴演算法、棧等等。我們使用棧來解決這個問題。
首先我們都知道,棧頂元素一般都是根元素,彈出根元素,加入根元素的子集後,位於棧頂的是根元素的最右子節點,棧低的是根元素的最左子節點。
如果我們按照這個順序列印的話,輸出的是[1,4,2,3,6,5]。如果我們把這個結果反轉後就是[5,6,3,2,4,1]就是結果。
Java題解
/* // Definition for a Node. 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) { Stack<Node> stack = new Stack<>(); List<Integer> ans = new ArrayList<>(); if(root==null) return ans; stack.push(root); while (!stack.isEmpty()) { Node node = stack.pop(); for(Node tmpNode:node.children) stack.push(tmpNode); ans.add(node.val); } Collections.reverse(ans); return ans ; } }