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) {
        val = _val;
        children = _children;
    }
};
*/
class Solution {
public:
    vector<int> preorder(Node* root) {
        vector<int> res;
        if(!root){
            return res;
        }else{
            res.push_back(root->val);
            for(Node* node : root->children){
                vector<int> lst = preorder(node);
                res.insert(res.end(), lst.begin(), lst.end());
            }
            return res;
        }
    }
};

原文地址:https://www.cnblogs.com/zhanzq/p/10600174.html

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

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

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

LeetCode 145. 二叉树的后序遍历(Binary Tree Postorder Traversal)

题目描述 给定一个二叉树,返回它的 后序 遍历. 示例: 输入: [1,null,2,3] 1 2 / 3 输出: [3,2,1] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 解题思路 后序遍历的顺序是左孩子->右孩子->父节点,对于每个遍历到的节点,执行如下操作: 首先对该节点不断沿左孩子方向向下遍历并入栈,直到左孩子为空 取出栈顶节点,此时该节点为树的最左下节点,若其右孩子不为空,则回到步骤1:若为空说明其为叶子节点,将其值输出到结果中,并记录pre为当前节点 在步骤2判断右孩子是

【LeetCode 144_二叉树_遍历】Binary Tree Preorder Traversal

解法一:非递归 1 vector<int> preorderTraversal(TreeNode* root) 2 { 3 vector<int> res; 4 if (root == NULL) 5 return res; 6 7 stack<TreeNode*> node_stack; 8 TreeNode *p = root; 9 while (p || !node_stack.empty()) { 10 if (p) { 11 res.push_back(p-&

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

【LeetCode-面试算法经典-Java实现】【144-Binary Tree Preorder Traversal(二叉树非递归前序遍历)】

[144-Binary Tree Preorder Traversal(二叉树非递归前序遍历)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 原题 Given a binary tree, return the preorder traversal of its nodes' values. For example: Given binary tree {1,#,2,3}, 1 2 / 3 return [1,2,3]. Note: Recursive solution

[LeetCode] Binary Tree Preorder Traversal (非递归的先序遍历)

Binary Tree Preorder Traversal Given a binary tree, return the preorder traversal of its nodes' values. For example: Given binary tree {1,#,2,3}, 1 2 / 3 return [1,2,3]. Note: Recursive solution is trivial, could you do it iteratively 解题思路: 二叉树的前序遍历.

leetcode - Binary Tree Preorder Traversal &amp;&amp; Binary Tree Inorder Traversal &amp;&amp; Binary Tree Postorder Traversal

简单来说,就是二叉树的前序.中序.后序遍历,包括了递归和非递归的方法 前序遍历(注释中的为递归版本): 1 #include <vector> 2 #include <stack> 3 #include <stddef.h> 4 #include <iostream> 5 6 using namespace std; 7 8 struct TreeNode 9 { 10 int val; 11 TreeNode *left; 12 TreeNode *rig

[Leetcode][Tree][Binary Tree Preorder Traversal]

二叉树的前序遍历:root点先被访问,然后是left和right子节点.迭代的版本也相对好写. 1.递归版本:时间复杂度O(N),空间复杂度O(N) 1 /** 2 * Definition for binary tree 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8 * }

leetcode 刷题之路 79 Binary Tree Preorder Traversal

Given a binary tree, return the preorder traversal of its nodes' values. For example: Given binary tree {1,#,2,3}, 1 2 / 3 return [1,2,3]. Note: Recursive solution is trivial, could you do it iteratively? 非递归实现树的前序遍历.前序遍历比较简单,注意入栈的时候应该按照右孩子节点在前的顺序,这样