N叉樹的前序遍歷

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;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章