给定一个 N 叉树,返回其节点值的前序遍历。

例如,给定一个 3叉树 :

返回其前序遍历: [1,3,5,6,2,4]。
——————————
解法一:通过递归的方法进行求解,时间复杂度为O(n)O(n)O(n),空间复杂度为O(n)O(n)O(n),其C++代码如下:

/*
// Definition for a Node.
class Node {
public:int val;vector<Node*> children;Node() {}Node(int _val) {val = _val;}Node(int _val, vector<Node*> _children) {val = _val;children = _children;}
};
*/
class Solution {private:vector<int> num;
public:vector<int> preorder(Node* root) {function(root);return num;}void function(Node* root){if(root==NULL)return;num.push_back(root->val);for(int i=0;i<root->children.size();++i){function(root->children[i]);}}
};

解法二:使用迭代的方法,我们使用一个栈来帮助我们得到前序遍历,需要保证栈顶的节点就是我们当前遍历到的节点。我们首先把根节点入栈,因为根节点是前序遍历中的第一个节点。随后每次我们从栈顶取出一个节点 u,它是我们当前遍历到的节点,并把 u 的所有子节点逆序推入栈中。例如 u 的子节点从左到右为 v1, v2, v3,那么推入栈的顺序应当为 v3, v2, v1,这样就保证了下一个遍历到的节点(即 u 的第一个子节点 v1)出现在栈顶的位置。

作者:LeetCode
链接:https://leetcode-cn.com/problems/n-ary-tree-preorder-traversal/solution/ncha-shu-de-qian-xu-bian-li-by-leetcode/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

其C++代码如下。时间复杂度为O(n)O(n)O(n),空间复杂度为O(n)O(n)O(n)。

/*
// Definition for a Node.
class Node {
public:int val;vector<Node*> children;Node() {}Node(int _val) {val = _val;}Node(int _val, vector<Node*> _children) {val = _val;children = _children;}
};
*/
class Solution {public:vector<int> preorder(Node* root) {vector<int> num;if(root==NULL)return num;stack<Node*> stk;stk.push(root);while(!stk.empty()){Node* n1 = stk.top();num.push_back(n1->val);stk.pop();for(int i=n1->children.size()-1;i>=0;i--){stk.push(n1->children[i]);}}return num;}
};

leetcode —— 589. N叉树的前序遍历 (使用到遍历多叉树的方法)相关推荐

  1. leetcode力扣105. 从前序与中序遍历序列构造二叉树

    我是清都山水郎,天教懒慢带疏狂.曾批给露支风券,累奏流云借月章. 诗万首,酒千觞,几曾着眼看侯王.玉楼金阙慵归去,且插梅花醉洛阳.  --朱敦儒 <鹧鸪天> 根据一棵树的前序遍历与中序遍历 ...

  2. 【LeetCode笔记】105. 从前序与中序遍历序列构造二叉树(Java、递归、二叉树、哈希表)

    文章目录 题目描述 代码 & 思路 题目描述 这题主要是考察前序.后序的性质,以及相互间的关系 代码 & 思路 前序:根 - 左 - 右: 中序:左 - 根 - 右,那么用前序数组的首 ...

  3. LeetCode Algorithm 589. N 叉树的前序遍历

    589. N 叉树的前序遍历 Ideas 二叉树的前序遍历模板,拿过来稍微一改就完事了. def preorderTraversalLoop(node):if not node:returnstack ...

  4. leetcode 589. N 叉树的前序遍历,590. N 叉树的后序遍历(Java版)

    589. N 叉树的前序遍历 https://leetcode-cn.com/problems/n-ary-tree-preorder-traversal/ 题解 import java.util.A ...

  5. LeetCode每日一题题解:589. N 叉树的前序遍历-题解-python C++源代码

    589. N 叉树的前序遍历 难度简单231收藏分享切换为英文接收动态反馈 给定一个 n 叉树的根节点  root ,返回 其节点值的 前序遍历 . n 叉树 在输入中按层序遍历进行序列化表示,每组子 ...

  6. leetcode:589. N叉树的前序遍历

    题目来源 589. N叉树的前序遍历 题目描述 class Node {public:int val;vector<Node*> children;Node() {}Node(int _v ...

  7. leetcode 589.N叉树的前序遍历(js)

    题目 给定一个 n 叉树的根节点 root ,返回 其节点值的 前序遍历 . n 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例). 示例 1: 输入:root ...

  8. [力扣cpp实现] 589. N叉树的前序遍历

    589. N叉树的前序遍历 1. 题目描述 2. 代码如下 1.c++ leetcode 589. N叉树的前序遍历 1. 题目描述 给定一个 n 叉树的根节点 root ,返回 其节点值的 前序遍历 ...

  9. LeetCode 589. N-ary Tree Preorder Traversal-多子节点树前序遍历--递归,迭代--反向压栈--C++解法

    LeetCode 589. N-ary Tree Preorder Traversal-多子节点树前序遍历–递归,迭代–反向压栈–C++解法 LeetCode题解专栏:LeetCode题解 LeetC ...

  10. 589. N 叉树的前序遍历(javascript)589. N-ary Tree Preorder Traversal

    给定一个 n 叉树的根节点 root ,返回 其节点值的 前序遍历 . n 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例). Given the root of ...

最新文章

  1. 沉痛悼念 pip search 一路走好
  2. 通俗讲解Pytorch梯度的相关问题:计算图、torch.no_grad、zero_grad、detach和backward;Variable、Parameter和torch.tensor
  3. html编译器nvu,开源的网页编辑器Nvu
  4. C语言试题六十九之请编写函数判断一个数是不是素数
  5. Javascript 基础—变量 运算符
  6. 简单几何(极角排序) POJ 2007 Scrambled Polygon
  7. python glob.glob() 函数
  8. 计算机英语四六级考试时间,英语四六级口语考试时间
  9. 【算法】剑指 Offer 53 - I. 在排序数组中查找数字 I
  10. 记忆化搜索--poj 1597 Function Run Fun
  11. Entity Relationship diagram/Data model for Microsoft Navision
  12. win10计算机错误代码,win10电脑更新失败提示错误代码0x80070424修复方法
  13. markdown中数学符号和公式总结
  14. 基于Visual Studio 2003/2005的Office插件开发FAQ
  15. 2021年 第一个月的福利 程序员免费资源!
  16. Filter Listener
  17. python音频分析工具_Python对音频进行测试及频谱分析
  18. NFC毕业纪念卡:小小车票,致逝去青春
  19. linux gsoap交叉编译,Gsoap交叉编译
  20. 天津城市职业学院计算机查询,天津城市职业学院教务处,教务管理系统

热门文章

  1. 购买笔记本不得不说的11点应用技巧
  2. Linux上监控tomcat down掉后自动重启tomcat
  3. Serverless 实战 —— Serverless 架构揭秘与静态网站部署实战
  4. Nginx接受代理协议
  5. Hystrix面试 - 基于 timeout 机制为服务接口调用超时提供安全保护
  6. OpenJDK-11的新特征
  7. 浅谈前端自动化构建 -- Grunt、Gulp、FIS
  8. 解决Some index files failed to download.They have been ignored, or old ones used instead报错
  9. Python实现matplotlib显示中文的方法详解
  10. C#LeetCode刷题-哈希表