Binary Tree Nodes

Sort by

recency

|

2432 Discussions

|

  • + 0 comments

    SELECT N,
    CASE
    WHEN P IS NULL THEN 'Root'
    WHEN N NOT IN (SELECT DISTINCT P FROM BST WHERE P IS NOT NULL) THEN 'Leaf'
    ELSE 'Inner'
    END AS node_type
    FROM BST ORDER BY N;

  • + 0 comments

    * WHEN N NOT IN(SELECT DISTINCT(P) FROM BST) THEN "Leaf" ELSE * We want N NOT IN(SELECT DISTINCT(P) FROM BST) to return True for nodes which are not present in attribute P In SQL, NOT IN fails if the subquery returns even one NULL. The subquery return Null for Root node. When you do N NOT IN (...) and the list contains NULL, the result is unknown, so the whole WHEN condition is false, even for correct leaves. * ....WHEN N NOT IN(SELECT DISTINCT(P) FROM BST WHERE P IS NOT NULL) THEN "Leaf" ....* for desired result NOTE :- ...WHERE P IS NOT NULL... for avoiding error due to edge cases

  • + 0 comments

    SELECT N, CASE WHEN P IS NULL THEN "Root" WHEN N NOT IN(SELECT DISTINCT(P) FROM BST WHERE P IS NOT NULL) THEN "Leaf" ELSE "Inner" END AS CATEGORY FROM BST ORDER BY N;

  • + 0 comments

    select N, case when P is NULL then 'Root' when N in (select distinct P from BST) then 'Inner' else 'Leaf' end as X from BST order by N;

  • + 0 comments
    SELECT t.N,
          CASE
              WHEN t.N = (SELECT N FROM BST WHERE P is NULL) THEN "Root"
              WHEN COUNT(t.N)>1 THEN "Inner"
              WHEN COUNT(t.N) = 1 THEN "Leaf"
              END
    FROM (
        SELECT N FROM BST
        UNION ALL
        SELECT P FROM BST
    ) AS t
    WHERE t.N IS NOT NULL
    GROUP BY (t.N)
    ORDER BY t.N