抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

书上给了使用迭代实现二叉树前序遍历的代码,提升一下自己,去LeetCode找个N叉树的!

题目

589. N 叉树的前序遍历

难度 简单

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

N 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例)。

进阶:

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

示例 1:

img

输入:root = [1,null,3,2,4,null,5,6]
输出:[1,3,5,6,2,4]

题解

/*
    class node {
      val: number;
      children: node[];
      constructor(val?: number) {
        this.val = val === undefined ? 0 : val;
        this.children = [];
      }
    }
*/

function preorder(root: node | null): number[] {
  const stack = [root];
  const ret = [];
  while (stack.length > 0) {
    const p = stack.pop();
    if (p?.children) {
      ret.push(p.val);
      stack.concat(p.children.reverse());
    }
  }
  return ret;
}

解题思路:

从根节点开始,每次拿出该节点下的所有子节点推入栈里(为了出栈时能拿到最左侧的,逆序一下),继续迭代栈里的内容。

吐槽一下原版LeetCode上的interface是用的Node,这个是JavaScript里的Keyword,不是很know why do?

题目链接:

589. N 叉树的前序遍历 - 力扣(LeetCode) (leetcode-cn.com)

评论