SQL:SEARCH DEPTH FIRST和 SEARCH BREADTH FIRST
用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相关推荐
- php字符串search,js获取location.search每个查询字符串的值
形如https://www.debug.org/temp/test2.html?a=1&b=2#ddd这样的链接,虽可通过location.search属性获取到问号后的所有查询字符串值,但要 ...
- 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 作者 ...
- 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 作者 ...
- python search用法,Python-re中search()函数的用法详解(查找ip)
1.首先来看一下search()和find()的区别 import re s1 = "2221155" #search 字符串第一次出现的位置 print(re.search(&q ...
- C#LeetCode刷题之#700-二叉搜索树中的搜索(Search in a Binary Search Tree)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4102 访问. 给定二叉搜索树(BST)的根节点和一个值. 你需要 ...
- Beam Search与Prefix Beam Search的理解与python实现
引言 Beam search是一种动态规划算法,能够极大的减少搜索空间,增加搜索效率,并且其误差在可接受范围内,常被用于Sequence to Sequence模型,CTC解码等应用中 时间复杂度 对 ...
- html中search叉号颜色,search.html
产品列表页 href="css/widget-cartPanelView.css" /> 爱思乐欢迎您! 请 登录 免费注册 我的订单 我的爱思乐 爱思乐会员 企业采购 关注 ...
- Project 1:Search in Pacman(吃豆人搜索实验)(一)
题目链接http://ai.berkeley.edu/search.html Q1: Depth First Search Q2: Breadth First Search Q3: Uniform C ...
- Swift-binary search tree
class BinarySearchTree<T:Comparable> {private(set) var value:Tprivate(set) var parent:BinarySe ...
最新文章
- ASP.net中太长的数据缩略显示
- beego 显示html文件,[Beego] 内置的模板函数(不同格式的字符串和html的互转)
- BZOJ1054(搜索)
- 快速傅立叶变换(FFT)算法(原来这就是蝶形变换)
- 20 个很棒的 jQuery Mobile 教程
- 电路布线(动态规划C++实现)
- 价值连城 图灵奖得主Yann LeCun 杨立昆的采访 给AI从业者的建议
- matlab平稳性检验,平稳性检验方法的有效性研究
- 设置透明背景和转换图片格式的技巧
- 一个简单的txt分割器
- cpci检索为什么那么慢_cpci检索论文含金量高吗?
- HDFS BALANCER
- python猴子分桃子的数学题_小学奥数猴子分桃练习及答案【三篇】
- 颠覆你想象的150个故事(1)
- vivado 2017.4安装步骤
- Spring源码构建项目,导入eclipse后,缺失spring-cglib-repack-3.2.4.jar和spring-objenesis-repack-2.4.jar的解决办法
- Qt数据可视化(QBoxPlotSeries盒须图)
- 北理python复试_北理复试及其初试超强总结(转)
- [附源码]Node.js计算机毕业设计Sketch2Mod网站Express
- 今日表格案列实现代码