返回介绍

solution / 1500-1599 / 1516.Move Sub-Tree of N-Ary Tree / README

发布于 2024-06-17 01:03:18 字数 3254 浏览 0 评论 0 收藏 0

1516. 移动 N 叉树的子树

English Version

题目描述

给定一棵没有重复值的 N 叉树 的根节点 root ,以及其中的两个节点 p 和 q

移动节点 p 及其子树,使节点 p 成为节点 q 的直接子节点。如果 p 已经是 q 的直接子节点,则请勿改动任何节点。节点 p 必须是节点 q 的子节点列表的最后一项。

返回改动后的_树的根节点_。

 

节点 p 和 q 可能是下列三种情况之一:

  1. 节点 q 在节点 p 的子树中。
  2. 节点 p 在节点 q 的子树中。
  3. 节点 p 不在节点 q 的子树中,且节点 q 也不在节点 p 的子树中。

在第 2 种和第 3 种情况中,你只需要移动 p (及其子树),使 p 成为 q 的子节点。但是在第 1 种情况中,树的节点可能会断连,因此你还需要重新连接这些节点。请在解题前仔细阅读示例。

 

_N 叉树的输入序列以层序遍历的形式给出,每组子节点用 null 分隔(见示例)。_

例如,上面的树会被序列化为 [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:

输入: root = [1,null,2,3,null,4,5,null,6,null,7,8], p = 4, q = 1
输出: [1,null,2,3,4,null,5,null,6,null,7,8]
解释: 该示例属于第二种情况,节点 p 在节点 q 的子树中。我们可以移动节点 p 及其子树,使 p 成为节点 q 的直接子节点。
注意,节点 4 是节点 1 的最后一个子节点。

示例 2:

输入: root = [1,null,2,3,null,4,5,null,6,null,7,8], p = 7, q = 4
输出: [1,null,2,3,null,4,5,null,6,null,7,8]
解释: 节点 7 已经是节点 4 的直接子节点,因此我们不改动任何节点。

示例 3:

输入: root = [1,null,2,3,null,4,5,null,6,null,7,8], p = 3, q = 8
输出: [1,null,2,null,4,5,null,7,8,null,null,null,3,null,6]
解释: 该示例属于第三种情况,节点 p 不在节点 q 的子树中,反之亦然。我们可以移动节点 3 及其子树,使之成为节点 8 的子节点。

 

提示:

  • 节点的总数在 [2, 1000] 间。
  • 每个节点都有 唯一 的值。
  • p != null
  • q != null
  • p 和 q 是两个不同的节点(即 p != q )。

 

解法

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文