leetcode刷題筆記-589. N叉樹的前序遍歷(java實現)
阿新 • • 發佈:2020-11-12
題目描述
給定一個 N 叉樹,返回其節點值的前序遍歷。
例如,給定一個3叉樹
:
返回其前序遍歷:[1,3,5,6,2,4]
。
來源:力扣(LeetCode)連結:https://leetcode-cn.com/problems/n-ary-tree-preorder-traversal/
解題思路
遞迴方式,按照訪問 根節點——子樹 的方式遍歷這棵樹,當訪問子樹的時候,子樹也可以當作n叉樹,當節點為空時返回,按照這個方式可以來進行遞迴。
解題程式碼
複雜度分析
時間複雜度:O(n),其中 n 是n叉樹的節點數。每一個節點恰好被遍歷一次。
空間複雜度:O(n),為遞迴過程中棧的開銷,平均情況下為 O(logn),最壞情況下樹呈現鏈狀,為 O(n)。
/* // 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> preorder(Node root) { helper(root); return res; } public void helper(Node root){ if(root == null) return ; res.add(root.val); for(int i=0; i<root.children.size(); i++) { helper(root.children.get(i)); } } }