我正在尝试在 Ruby 中实现一个函数来检查二叉树 2 是否是二叉树 1 的子树。这就是我目前所拥有的——它似乎可以工作,但我不确定它的可扩展性如何。这是 O(2^k) 时间吗?如果是这样,任何想法如何优化它?我假设 tree1 和 tree2 属于具有属性数据、左和右的节点类。
def containsTree(tree1, tree2)
if tree2.nil?
return true
if tree1.nil?
return false
if tree1.data == tree2.data
containsTree(tree1.left, tree2.left) && containsTree(tree1.right, tree2.right)
else
containsTree(tree1.left, tree2) || containsTree(tree1.right, tree2)
end
end