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 */

方法一:栈

扫描二维码关注公众号,回复: 3519195 查看本文章
 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 };

猜你喜欢

转载自www.cnblogs.com/99xiaobei/p/9768753.html