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;
    }
};
相关推荐
有为少年14 分钟前
Welford算法 | 从单一到批次
大数据·人工智能·深度学习·神经网络·算法·机器学习
吴可可12317 分钟前
Teigha处理CAD样条曲线的方法解析
数据库·算法·c#
啊董dong29 分钟前
noi-2026年5月12号小测验
数据结构·c++·算法
不知名的忻30 分钟前
红黑树(简易版)
算法·红黑树
NQBJT32 分钟前
万字拆解 NeckFix:AI 脖子前倾检测的算法原理与工程实现
人工智能·算法
jaychouchannel37 分钟前
Python 常用排序算法详解
算法
数智工坊38 分钟前
【Inner Monologue论文阅读】: 首次将大语言模型嵌入机器人控制闭环,实现自我反思和动态行为调整
论文阅读·人工智能·算法·语言模型·机器人·无人机
为何创造硅基生物1 小时前
C 语言 typedef 结构体私有化
c语言·开发语言·算法
yzx9910131 小时前
递归算法入门:像俄罗斯套娃一样思考
人工智能·算法
心中有国也有家1 小时前
从零上手 CANN 学习中心:像逛技术便利店一样学昇腾
学习·算法·开源