首页 > 其他 > 详细

LeetCode 589. N叉树的前序遍历

时间:2019-09-08 17:14:52      阅读:74      评论:0      收藏:0      [点我收藏+]

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

例如,给定一个 3叉树 :

 

 技术分享图片

 

 

 

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

 

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/n-ary-tree-preorder-traversal

递归:

 1 void process(Node* root,vector<int> &ans) {
 2     ans.push_back(root->val);
 3     int n = root->children.size();
 4 
 5     for(int i = 0; i < n; i++)
 6     {
 7         process(root->children[i],ans);
 8     }
 9 }
10 vector<int> preorder(Node* root) {
11     vector<int> ans;
12     if(root)
13         process(root,ans);
14     return ans;
15 }

迭代:

 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 */
16 class Solution {
17 public:
18     vector<int> preorder(Node* root) {
19         vector<int> ans;
20         if(!root) return ans;
21         stack<Node*> nodeStack;
22         nodeStack.push(root);
23         while(!nodeStack.empty()) {
24             Node* node = nodeStack.top();
25             ans.push_back(node->val);
26             nodeStack.pop();
27             int n = node->children.size();
28             for(int i = n-1; i >= 0 ; i--)
29             {
30                 nodeStack.push(node->children[i]);
31             }
32         }
33         return ans;
34     }
35 };

 

LeetCode 589. N叉树的前序遍历

原文:https://www.cnblogs.com/jj81/p/11486812.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!