Data structures 用于检查二叉树是否为二叉搜索树的递归关系
有人能帮我解释一下这个伪代码的递归关系吗?此伪代码描述了一个过程,该过程检查二叉树是否为二叉搜索树。我认为:Data structures 用于检查二叉树是否为二叉搜索树的递归关系,data-structures,binary-tree,binary-search-tree,pseudocode,recurrence,Data Structures,Binary Tree,Binary Search Tree,Pseudocode,Recurrence,有人能帮我解释一下这个伪代码的递归关系吗?此伪代码描述了一个过程,该过程检查二叉树是否为二叉搜索树。我认为: T(n) = T(n/2) +1 代码: IsBST(节点,应答)← (对) 如果节点!=那就空了 如果节点。对!=那就空了 如果node.keynode.left.key,则 IsBST(node.left,应答) 其他的 答复← 错误的 回覆 回覆 你能更准确地回答你的问题吗?这个算法是递归的,如果你已经有一些递归算法的知识,它看起来很简单。我想知道这个算法的递归关系是什么。我认
T(n) = T(n/2) +1
代码:
IsBST(节点,应答)← (对)
如果节点!=那就空了
如果节点。对!=那就空了
如果node.keynode.left.key,则
IsBST(node.left,应答)
其他的
答复← 错误的
回覆
回覆
你能更准确地回答你的问题吗?这个算法是递归的,如果你已经有一些递归算法的知识,它看起来很简单。我想知道这个算法的递归关系是什么。我认为它是T(n)=T(n/2)+1,但我不确定如何准确地接近它,这是我的直觉。什么是T?算法的复杂性?我使用的符号和你不一样,假设n是树的高度,它应该是:T(n)=2*T(n-1)+2;常数可能会因计算的操作而异。@innoSPG您能解释一下如何得到T(n)=2*T(n-1)+2吗?
IsBST(node, answer ← true)
if node!= null then
if node.right!= null then
if node.key < node.right.key then
IsBST(node.right, answer)
else
answer ← false
return answer
if node.left!= null then
if node.key > node.left.key then
IsBST(node.left, answer)
else
answer ← false
return answer
return answer