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

Posted 99xiaobei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 };

 

以上是关于LeetCode-589. N叉树的前序遍历的主要内容,如果未能解决你的问题,请参考以下文章

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

LeetCode 589. N 叉树的前序遍历(迭代写法) / 2049. 统计最高分的节点数目 / 590. N 叉树的后序遍历

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

LeetCode 589 N叉树前序遍历[DFS] HERODING的LeetCode之路

java刷题--589N叉树的前序遍历

LeetCode 589 N-ary Tree Preorder Traversal 解题报告