用SQL实现深度优先搜索和广度优先搜索

语法举列子:

WITH T AS (
SELECT 'B' A , 'A' B , 2 N FROM DUAL UNION ALL
SELECT 'C' A , 'A' B , 4 N FROM DUAL UNION ALL
SELECT 'D' A , 'B' B , 3 N FROM DUAL UNION ALL
SELECT 'E' A , 'B' B , 3 N FROM DUAL UNION ALL
SELECT 'F' A , 'B' B , 2 N FROM DUAL UNION ALL
SELECT 'G' A , 'C' B , 4 N FROM DUAL UNION ALL
SELECT 'H' A , 'C' B , 2 N FROM DUAL UNION ALL
SELECT 'I' A , 'H' B , 5 N FROM DUAL
)
, T1 (A,B,N,L) AS (                   -------------------------指明列的信息,不然会报错 ORA-32488: WITH clause element did not have a column alias list
SELECT T.A,T.B,T.N,1 FROM T
WHERE T.B = 'A'
UNION ALL
SELECT T.A, T.B, T1.N*T.N ,L+1  --------------------------------相当于迭代
FROM T , T1
WHERE T1.A = T.B
)
SEARCH DEPTH FIRST BY B SET SEQ  -----------------------类似rownum
SELECT *FROM  (
SELECT A,B,N,SEQ
FROM   T1 )

结果:

A开始,然后B,到C,再回溯子树A,C,H

SQL> 24  /A B          N        SEQ          L
- - ---------- ---------- ----------
B A          2          1          1
D B          6          2          2
E B          6          3          2
F B          4          4          2
C A          4          5          1
G C         16          6          2
H C          8          7          2
I H         40          8          38 rows selected

对比广度:

先遍历完所有A,所有B,所有C

SQL> 24  /A B          N        SEQ          L
- - ---------- ---------- ----------
B A          2          1          1
C A          4          2          1
F B          4          3          2
E B          6          4          2
D B          6          5          2
H C          8          6          2
G C         16          7          2
I H         40          8          38 rows selected

SQL:SEARCH DEPTH FIRST和 SEARCH BREADTH FIRST相关推荐

  1. php字符串search,js获取location.search每个查询字符串的值

    形如https://www.debug.org/temp/test2.html?a=1&b=2#ddd这样的链接,虽可通过location.search属性获取到问号后的所有查询字符串值,但要 ...

  2. 04-树7. Search in a Binary Search Tree (25)

    04-树7. Search in a Binary Search Tree (25) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 ...

  3. pat04-树7. Search in a Binary Search Tree (25)

    04-树7. Search in a Binary Search Tree (25) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 ...

  4. python search用法,Python-re中search()函数的用法详解(查找ip)

    1.首先来看一下search()和find()的区别 import re s1 = "2221155" #search 字符串第一次出现的位置 print(re.search(&q ...

  5. C#LeetCode刷题之#700-二叉搜索树中的搜索(Search in a Binary Search Tree)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4102 访问. 给定二叉搜索树(BST)的根节点和一个值. 你需要 ...

  6. Beam Search与Prefix Beam Search的理解与python实现

    引言 Beam search是一种动态规划算法,能够极大的减少搜索空间,增加搜索效率,并且其误差在可接受范围内,常被用于Sequence to Sequence模型,CTC解码等应用中 时间复杂度 对 ...

  7. html中search叉号颜色,search.html

    产品列表页 href="css/widget-cartPanelView.css" /> 爱思乐欢迎您! 请 登录 免费注册 我的订单 我的爱思乐 爱思乐会员 企业采购 关注 ...

  8. Project 1:Search in Pacman(吃豆人搜索实验)(一)

    题目链接http://ai.berkeley.edu/search.html Q1: Depth First Search Q2: Breadth First Search Q3: Uniform C ...

  9. Swift-binary search tree

    class BinarySearchTree<T:Comparable> {private(set) var value:Tprivate(set) var parent:BinarySe ...

最新文章

  1. ASP.net中太长的数据缩略显示
  2. beego 显示html文件,[Beego] 内置的模板函数(不同格式的字符串和html的互转)
  3. BZOJ1054(搜索)
  4. 快速傅立叶变换(FFT)算法(原来这就是蝶形变换)
  5. 20 个很棒的 jQuery Mobile 教程
  6. 电路布线(动态规划C++实现)
  7. 价值连城 图灵奖得主Yann LeCun 杨立昆的采访 给AI从业者的建议
  8. matlab平稳性检验,平稳性检验方法的有效性研究
  9. 设置透明背景和转换图片格式的技巧
  10. 一个简单的txt分割器
  11. cpci检索为什么那么慢_cpci检索论文含金量高吗?
  12. HDFS BALANCER
  13. python猴子分桃子的数学题_小学奥数猴子分桃练习及答案【三篇】
  14. 颠覆你想象的150个故事(1)
  15. vivado 2017.4安装步骤
  16. Spring源码构建项目,导入eclipse后,缺失spring-cglib-repack-3.2.4.jar和spring-objenesis-repack-2.4.jar的解决办法
  17. Qt数据可视化(QBoxPlotSeries盒须图)
  18. 北理python复试_北理复试及其初试超强总结(转)
  19. [附源码]Node.js计算机毕业设计Sketch2Mod网站Express
  20. 今日表格案列实现代码

热门文章

  1. 织梦主动提交_织梦CMS网站如何自动提交百度快速收录(详细教程)
  2. 计算机7层网络以及每层协议
  3. 蔡国权“无心快语”Careless whisper 英文翻出歌词
  4. Java IO流——异常及捕获异常 try…catch…finally
  5. 仪器仪表的介绍及发展
  6. DBeaver Enterprise 7.1 企业版注册方法
  7. 锤子发布会的那些梗-2016年10月18号
  8. Spring的IOC/DI
  9. vue_music:歌手singer.vue页面
  10. android音乐频谱解析