Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
题目分析
给定一个 n 叉树的根节点 root ,返回 其节点值的 **前序遍历 **。
n 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例)。
思路讲解
同二叉树的前序遍历(根左右),输出根节点的值后从左到右递归的遍历子树
示例
示例一:
输入: root = [1,null,3,2,4,null,5,6]
输出: [1,3,5,6,2,4]
示例二:
输入:root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]
输出:[1,2,3,6,7,11,14,4,8,12,5,9,13,10]
代码
/*
* @lc app=leetcode.cn id=589 lang=javascript
*
* [589] N 叉树的前序遍历
*/
// @lc code=start
/**
* // Definition for a Node.
* function Node(val, children) {
* this.val = val;
* this.children = children;
* };
*/
/**
* @param {Node|null} root
* 注意:对根节点children的遍历
* 递归:封装函数
* @return {number[]}
*/
// 前期操作
var preorder = function(root) {
let ans = [] // 定义一个空数组,存放将要遍历出来的所有节点
travese(root, ans) // 定义一个封装函数travese, 传递两个参数root和ans
return ans // 返回ans
};
var travese = function (root, ans) {
if (!root) return null // 判断根节点是否为空,如果为空直接返回,不为空,则将root.val放入ans中
ans.push(root.val)
// N叉树的子树是children,有很多的子树,通过遍历,将值放入ans
for (x of root.children) {
travese(x, ans)
}
return ans
}
// @lc code=end