码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-10-10 21:47:06      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:alt   分享图片   idt   style   width   class   nod   tco   temp   

给定一个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叉树的前序遍历

标签:alt   分享图片   idt   style   width   class   nod   tco   temp   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!