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;
    }
};
相关推荐
shangjian0073 小时前
AI大模型-评价指标-相关术语
人工智能·算法
Live&&learn3 小时前
算法训练-数据结构
数据结构·算法·leetcode
松岛雾奈.2305 小时前
机器学习--PCA降维算法
人工智能·算法·机器学习
电子_咸鱼5 小时前
【STL string 全解析:接口详解、测试实战与模拟实现】
开发语言·c++·vscode·python·算法·leetcode
sweet丶5 小时前
适合iOS开发的一种缓存策略YYCache库 的原理
算法·架构
是宇写的啊6 小时前
算法—滑动窗口
算法
风筝在晴天搁浅6 小时前
代码随想录 509.斐波那契数
数据结构·算法
落落落sss6 小时前
java实现排序
java·数据结构·算法
limenga1027 小时前
支持向量机(SVM)深度解析:理解最大间隔原理
算法·机器学习·支持向量机
coder江7 小时前
二分查找刷题总结
算法