【发布时间】:2010-10-27 22:44:35
【问题描述】:
我需要一个 C++ 的伪代码,它将在树中搜索以找到值为“z”的节点。
函数被赋予树的根节点以开始。 树具有每个节点最多有两个子节点的属性。 每个节点都有 3 个属性:left child、right child 和 value。
【问题讨论】:
-
不,我只是在一次采访中被问到这个,我想看看我是怎么做的:)
标签: binary-tree
我需要一个 C++ 的伪代码,它将在树中搜索以找到值为“z”的节点。
函数被赋予树的根节点以开始。 树具有每个节点最多有两个子节点的属性。 每个节点都有 3 个属性:left child、right child 和 value。
【问题讨论】:
标签: binary-tree
以下伪代码将按升序对树执行您想要的操作。
def findval (node,lookfor):
if node is null:
return null
if node.val is equal to lookfor:
return node
if node.val is less than lookfor
return findval (node.right,lookfor)
return findval (node.left,lookfor)
被调用:
znode = findval (root, "z")
如果不存在节点,它将给你节点或 null。
如果要避免递归,可以使用迭代解决方案:
def findval (node,lookfor):
while node is not null:
if node.val is equal to lookfor:
break
if node.val is less than lookfor:
node = node.right
else:
node = node.left
return node
显然,您可以进行各种增强,例如允许不同的顺序、回调比较函数或允许重复键,但这是二叉树搜索的典型示例。
【讨论】: