leetcode —— 589. N叉树的前序遍历 (使用到遍历多叉树的方法)
给定一个 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叉树的前序遍历 (使用到遍历多叉树的方法)相关推荐
- leetcode力扣105. 从前序与中序遍历序列构造二叉树
我是清都山水郎,天教懒慢带疏狂.曾批给露支风券,累奏流云借月章. 诗万首,酒千觞,几曾着眼看侯王.玉楼金阙慵归去,且插梅花醉洛阳. --朱敦儒 <鹧鸪天> 根据一棵树的前序遍历与中序遍历 ...
- 【LeetCode笔记】105. 从前序与中序遍历序列构造二叉树(Java、递归、二叉树、哈希表)
文章目录 题目描述 代码 & 思路 题目描述 这题主要是考察前序.后序的性质,以及相互间的关系 代码 & 思路 前序:根 - 左 - 右: 中序:左 - 根 - 右,那么用前序数组的首 ...
- LeetCode Algorithm 589. N 叉树的前序遍历
589. N 叉树的前序遍历 Ideas 二叉树的前序遍历模板,拿过来稍微一改就完事了. def preorderTraversalLoop(node):if not node:returnstack ...
- leetcode 589. N 叉树的前序遍历,590. N 叉树的后序遍历(Java版)
589. N 叉树的前序遍历 https://leetcode-cn.com/problems/n-ary-tree-preorder-traversal/ 题解 import java.util.A ...
- LeetCode每日一题题解:589. N 叉树的前序遍历-题解-python C++源代码
589. N 叉树的前序遍历 难度简单231收藏分享切换为英文接收动态反馈 给定一个 n 叉树的根节点 root ,返回 其节点值的 前序遍历 . n 叉树 在输入中按层序遍历进行序列化表示,每组子 ...
- leetcode:589. N叉树的前序遍历
题目来源 589. N叉树的前序遍历 题目描述 class Node {public:int val;vector<Node*> children;Node() {}Node(int _v ...
- leetcode 589.N叉树的前序遍历(js)
题目 给定一个 n 叉树的根节点 root ,返回 其节点值的 前序遍历 . n 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例). 示例 1: 输入:root ...
- [力扣cpp实现] 589. N叉树的前序遍历
589. N叉树的前序遍历 1. 题目描述 2. 代码如下 1.c++ leetcode 589. N叉树的前序遍历 1. 题目描述 给定一个 n 叉树的根节点 root ,返回 其节点值的 前序遍历 ...
- LeetCode 589. N-ary Tree Preorder Traversal-多子节点树前序遍历--递归,迭代--反向压栈--C++解法
LeetCode 589. N-ary Tree Preorder Traversal-多子节点树前序遍历–递归,迭代–反向压栈–C++解法 LeetCode题解专栏:LeetCode题解 LeetC ...
- 589. N 叉树的前序遍历(javascript)589. N-ary Tree Preorder Traversal
给定一个 n 叉树的根节点 root ,返回 其节点值的 前序遍历 . n 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例). Given the root of ...
最新文章
- 沉痛悼念 pip search 一路走好
- 通俗讲解Pytorch梯度的相关问题:计算图、torch.no_grad、zero_grad、detach和backward;Variable、Parameter和torch.tensor
- html编译器nvu,开源的网页编辑器Nvu
- C语言试题六十九之请编写函数判断一个数是不是素数
- Javascript 基础—变量 运算符
- 简单几何(极角排序) POJ 2007 Scrambled Polygon
- python glob.glob() 函数
- 计算机英语四六级考试时间,英语四六级口语考试时间
- 【算法】剑指 Offer 53 - I. 在排序数组中查找数字 I
- 记忆化搜索--poj 1597 Function Run Fun
- Entity Relationship diagram/Data model for Microsoft Navision
- win10计算机错误代码,win10电脑更新失败提示错误代码0x80070424修复方法
- markdown中数学符号和公式总结
- 基于Visual Studio 2003/2005的Office插件开发FAQ
- 2021年 第一个月的福利 程序员免费资源!
- Filter Listener
- python音频分析工具_Python对音频进行测试及频谱分析
- NFC毕业纪念卡:小小车票,致逝去青春
- linux gsoap交叉编译,Gsoap交叉编译
- 天津城市职业学院计算机查询,天津城市职业学院教务处,教务管理系统
热门文章
- 购买笔记本不得不说的11点应用技巧
- Linux上监控tomcat down掉后自动重启tomcat
- Serverless 实战 —— Serverless 架构揭秘与静态网站部署实战
- Nginx接受代理协议
- Hystrix面试 - 基于 timeout 机制为服务接口调用超时提供安全保护
- OpenJDK-11的新特征
- 浅谈前端自动化构建 -- Grunt、Gulp、FIS
- 解决Some index files failed to download.They have been ignored, or old ones used instead报错
- Python实现matplotlib显示中文的方法详解
- C#LeetCode刷题-哈希表