LeetCode-589. N叉树的前序遍历

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

例如,给定一个 3叉树 :

返回其前序遍历: [1,3,5,6,2,4]

说明: 递归法很简单,你可以使用迭代法完成此题吗?

 1 /*
 2 // Definition for a Node.
 3 class Node {
 4 public:
 5     int val;
 6     vector<Node*> children;
 7
 8     Node() {}
 9
10     Node(int _val, vector<Node*> _children) {
11         val = _val;
12         children = _children;
13     }
14 };
15 */

方法一:栈

 1 class Solution {
 2 public:
 3     vector<int> preorder(Node* root) {
 4         vector< int > ans ;
 5         stack <Node *> slist ;
 6         if( root == NULL )
 7             return ans ;
 8         slist.push( root ) ;
 9         while( slist.size() ){
10             Node *top = slist.top() ;
11             slist.pop();
12             ans.push_back( top->val ) ;
13             for( int i=top->children.size()-1;i>=0 ; i--){
14                 slist.push(top->children[i]);
15             }
16         }
17         return ans ;
18     }
19 };

个人笔记:1.push_back在最后插入数据;

2.slist.top()取栈顶元素;

方法二:递归

 1 class Solution {
 2 public:
 3     vector<int> preorder(Node* root) {
 4         vector<int> ans;
 5         if(!root)
 6             return ans;
 7         ans.push_back(root->val);
 8
 9         if(root->children.size())
10         {
11             for(int i=0;i<root->children.size();i++)
12             {
13                 vector<int> temp=preorder(root->children[i]);
14                 ans.insert(t.end(),temp.begin(),temp.end());
15             }
16         }
17         return ans;
18     }
19 };

原文地址:https://www.cnblogs.com/99xiaobei/p/9768753.html

时间: 2024-07-31 19:54:34

LeetCode-589. N叉树的前序遍历的相关文章

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

目录 题目描述: 解法: 题目描述: 给定一个 N 叉树,返回其节点值的前序遍历. 例如,给定一个 3叉树 : 返回其前序遍历:[1,3,5,6,2,4]. 说明: 递归法很简单,你可以使用迭代法完成此题吗? 解法: /* // Definition for a Node. class Node { public: int val; vector<Node*> children; Node() {} Node(int _val, vector<Node*> _children) {

589. N叉树的前序遍历

给定一个 N 叉树,返回其节点值的前序遍历. 例如,给定一个 3叉树 : 返回其前序遍历: [1,3,5,6,2,4]. 说明: 递归法很简单,你可以使用迭代法完成此题吗? /* // Definition for a Node. class Node { public int val; public List<Node> children; public Node() {} public Node(int _val,List<Node> _children) { val = _v

N叉树的前序遍历

一.题目描述 给定一个 N 叉树,返回其节点值的前序遍历 例如,给定一个3叉树: """ # Definition for a Node. class Node(object): def __init__(self, val, children): self.val = val self.children = children """ class Solution(object): def preorder(self, root): "

力扣——N叉树的前序遍历

给定一个 N 叉树,返回其节点值的前序遍历. 例如,给定一个 3叉树 : 返回其前序遍历: [1,3,5,6,2,4]. class Solution { public List<Integer> res = new ArrayList<Integer>(); public List<Integer> preorder(Node root) { if(root == null) return res; res.add(root.val); for(Node child

LeetCode 429. N叉树的层序遍历(N-ary Tree Level Order Traversal)

429. N叉树的层序遍历 429. N-ary Tree Level Order Traversal LeetCode429. N-ary Tree Level Order Traversal 题目描述 给定一个 N 叉树,返回其节点值的层序遍历. (即从左到右,逐层遍历). 例如,给定一个 3 叉树: 返回其层序遍历: [ [1], [3,2,4], [5,6] ] 说明: 树的深度不会超过 1000. 树的节点总数不会超过 5000. Java 实现 import java.util.Li

二叉树的前序遍历、后序遍历、中序遍历规则(递归)

1.前序遍历的规则:(根左右) (1)访问根节点 (2)前序遍历左子树 (3)前序遍历右子树 对于图中二叉树,前序遍历结果:ABDECF 2.中序遍历的规则:(左根右) (1)中序遍历左子树 (2)访问根节点 (3)中序遍历右子树 对于图中二叉树,中序遍历结果:DBEAFC 3.后序遍历二叉树的规则:(左右根) (1)后序遍历左子树 (2)后序遍历右子树 (3)访问根节点 对于图中二叉树,后序遍历结果:DEBFCA 例题:POJ2255 给了前.中序遍历,求后序遍历.参考:https://blo

leetcode | 二叉树的前序遍历、中序遍历、后续遍历的非递归实现

Binary Tree Preorder Traversal:https://leetcode.com/problems/binary-tree-preorder-traversal/ Binary Tree Inorder Traversal :https://leetcode.com/problems/binary-tree-inorder-traversal/ Binary Tree Postorder Traversal:https://leetcode.com/problems/bin

Leetcode:二叉树的前序遍历

Leetcode: 二叉树的前序遍历 最近在复习数据结构, 感觉很多东西都忘得的差不多了,哪怕是看完书再看视频,还是容易忘,所以干脆想着配合leetcode来刷吧,Python实现起来很简单,但是C语言也不能丢,所以C语言和Python一起吧. 题目: 给定一个二叉树,返回它的前序遍历. 输入: [1,null,2,3] 1 2 / 3 输出: [1,2,3] Python 实现 # Definition for a binary tree node. # class TreeNode(obje

java实现线索化二叉树的前序、中序、后续的遍历(完整代码)

java实现线索化二叉树的前序.中序.后续的遍历 比如创建一个二叉树 1 / 3 6 / \ / 8 10 14 线索化二叉树几个概念: n个节点的二叉链表中含有n+1 [公式2n-(n-1)=n+1]个空指针域.利用二叉链表中的空指针域,存放指向该节点在某种遍历次序下的前驱和后继节点的指针(这种附加指针成为线索).如下面的就是6+1=7个空指针域 (8,10,14各有连个指针没有指向 6有一个) 加上了线索的二叉链表称为线索链表,相应的二叉树称为线索二叉树.分为前序线索二叉树.中序线索二叉树.