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;
    }
};
相关推荐
人工智能培训9 小时前
知识图谱:结构化表达实体与关系的知识组织技术
大数据·人工智能·算法·重构·生活·知识图谱
地平线开发者10 小时前
QAT 实战:从 PyTorch 模型到 J6E 实板精度与延时验证
pytorch·算法·自动驾驶
IT星宿10 小时前
github-gravity:用 Rapier2D 把 GitHub 贡献图做成 SVG 物理动画
算法·github
♡すぎ♡10 小时前
SWE 的基本条件
算法·swe·浅水模拟
郝学胜-神的一滴12 小时前
AI 编程智能体 17:四步搞定专属AI智能体
大数据·人工智能·python·神经网络·算法·langchain·强化学习
微尘hjx12 小时前
【StrongSort 03】多轨迹算法StrongSort改进点
人工智能·算法·yolo·视觉检测·ultralytics·strongsort·轨迹算法
梦帮科技12 小时前
QML-04-QGraph-Diff:量子非欧图扩散生成模型与 SE(3) 等变分子晶格逆向合成完整技术指南(上部分)
人工智能·算法·自动化·量子计算·傅里叶分析
七牛开发者12 小时前
TokenGate:端到端可训练的 Token 剪枝机制,让大模型 Prefill 提速 11.3 倍
算法·机器学习·剪枝·长上下文·tokengate
牧瀬クリスだ14 小时前
Redis Hash实战:高效存储对象与购物车
java·数据库·redis·算法·哈希算法