leetcode589 N叉树的前序遍历

前序遍历的顺序是:根节点 -> 子节点1 -> 子节点2 -> ... -> 子节点N

递归:

cpp 复制代码
class Solution {
private:
    void traverse(Node* cur, vector<int>& res){
        if(cur == NULL) return;
        res.push_back(cur->val);
        for(Node* child: cur->children){
            traverse(child,res);
        }
    }
public:
    vector<int> preorder(Node* root) {
        vector<int> res;
        traverse(root, res);
        return res;
    }
};
  1. 队列(Queue)先进先出(FIFO) 的数据结构,适用于 层序遍历(BFS) ,而 前序遍历(DFS) 应该使用 栈(Stack)(后进先出,LIFO)。
cpp 复制代码
class Solution {
public:
    vector<int> preorder(Node* root) {
        vector<int> res;
        if(root == NULL) return res;
        stack<Node*> st;
        st.push(root);
        while(!st.empty()){
            Node* cur = st.top();
            res.push_back(cur->val);
            st.pop();
            int size = (cur->children).size();
            // 子节点从右到左入栈,保证左子节点先出栈
            for(int i = size-1; i >= 0; i--){
                st.push(cur->children[i]);
            }
            
        }
        return res;
    }
};
相关推荐
王禄DUT28 分钟前
高维亚空间超频物质变压缩技术 第27次CCF-CSP计算机软件能力认证
数据结构·算法
freyazzr1 小时前
Leetcode刷题 | Day51_图论03_岛屿问题02
数据结构·c++·算法·leetcode·深度优先·图论
passionSnail2 小时前
《MATLAB实战训练营:从入门到工业级应用》工程实用篇-自动驾驶初体验:车道线检测算法实战(MATLAB2016b版)
算法·matlab·自动驾驶
2301_807611492 小时前
126. 单词接龙 II
c++·算法·leetcode·深度优先·广度优先·回溯
Phoebe鑫3 小时前
数据结构每日一题day15(链表)★★★★★
算法
奋进的小暄3 小时前
数据结构(4) 堆
java·数据结构·c++·python·算法
珊瑚里的鱼3 小时前
LeetCode 102题解 | 二叉树的层序遍历
开发语言·c++·笔记·算法·leetcode·职场和发展·stl
_Djhhh4 小时前
【基础算法】二分查找的多种写法
java·数据结构·算法·二分查找
王哥儿聊AI5 小时前
GenCLS++:通过联合优化SFT和RL,提升生成式大模型的分类效果
大数据·人工智能·深度学习·算法·机器学习·自然语言处理
xiaolang_8616_wjl5 小时前
c++_2011 NOIP 普及组 (1)
开发语言·数据结构·c++·算法·c++20