N叉樹的前序遍歷
題目
N叉樹的前序遍歷(力扣:589)
給定一個 N 叉樹,返回其節點值的前序遍歷。
分析
兩種方式實現:
遞歸:遞歸非常簡單即可實現。優先輸出當前節點,然後遍歷孩子節點,最後返回結果即可。
迭代:通過棧來輔助實現,先將當前點入棧,當棧不爲空時,優先將節點值添加到結果中;然後遍歷當前節點的孩子節點,這裏需要注意,遍歷順序必須從後往前;遍歷完成即可得到結果。
代碼實現:方法一
/**
* 589. N叉樹的前序遍歷
*/
List<Integer> preList = new ArrayList<>();
public List<Integer> preorder(Node root) {
if(root == null){
return preList;
}
preList.add(root.val);
for(int i=0;i<root.children.size();i++){
preorder(root.children.get(i));
}
return preList;
}
代碼實現:方法二
/**
* 589. N叉樹的前序遍歷
*/
public List<Integer> preorder2(Node root) {
List<Integer> preList = new ArrayList<>();
if(root == null){
return preList;
}
Stack<Node> stack = new Stack<>();
stack.push(root);
Node tmp;
while (!stack.isEmpty()){
tmp = stack.pop();
preList.add(tmp.val);
for(int i=tmp.children.size()-1;i>=0;i--){
stack.push(tmp.children.get(i));
}
}
return preList;
}