2024-07-08
Learn coding
00

目录

题目描述:
示例:
解题思路:
参考代码:

题目描述:

js
表:Tree +-------------+------+ | Column Name | Type | +-------------+------+ | id | int | | p_id | int | +-------------+------+ id 是该表中具有唯一值的列。 该表的每行包含树中节点的 id 及其父节点的 id 信息。 给定的结构总是一个有效的树。 树中的每个节点可以是以下三种类型之一: "Leaf":节点是叶子节点。 "Root":节点是树的根节点。 "lnner":节点既不是叶子节点也不是根节点。 编写一个解决方案来报告树中每个节点的类型。 以 任意顺序 返回结果表。

示例:

js
示例 : 输入: Tree table: +----+------+ | id | p_id | +----+------+ | 1 | null | | 2 | 1 | | 3 | 1 | | 4 | 2 | | 5 | 2 | +----+------+ 输出: +----+-------+ | id | type | +----+-------+ | 1 | Root | | 2 | Inner | | 3 | Leaf | | 4 | Leaf | | 5 | Leaf | +----+-------+

1.png


解题思路:

对于节点类型的判断一共分为三类:

  1. 当上一个节点p_id为null时,表明该节点为根节点Root;
  2. 叶子节点Leaf不存在于上一个节点p_id列中;
  3. 既存在于id列又存在于p_id列的节点是内部节点Inner

采用以上判断条件,使用Case When语句即可解答,要注意Case When的语法。

参考代码:

sql
select id, (case when p_id is null then "Root" when id in (select p_id from Tree) then "Inner" else "Leaf" end) type from Tree
首页

PERSONAL SKILL

Proficient in Python, R, SQL, MS Office; English CET-6, can be used for meeting communication and reporting; Basic knowledge of CSS, html, JS.

WORKING EXPERIENCE

Click here to view my CV.