【问题标题】:Pseudo-code for search in binary tree二叉树中搜索的伪代码
【发布时间】:2010-10-27 22:44:35
【问题描述】:

我需要一个 C++ 的伪代码,它将在树中搜索以找到值为“z”的节点。

函数被赋予树的根节点以开始。 树具有每个节点最多有两个子节点的属性。 每个节点都有 3 个属性:left child、right child 和 value。

【问题讨论】:

  • 不,我只是在一次采访中被问到这个,我想看看我是怎么做的:)

标签: binary-tree


【解决方案1】:

以下伪代码将按升序对树执行您想要的操作。

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

显然,您可以进行各种增强,例如允许不同的顺序、回调比较函数或允许重复键,但这是二叉树搜索的典型示例。

【讨论】:

  • 这个解决方案假设右节点的值大于左节点,但我的问题没有这么说。
  • 但情况总是如此,因为这样的树是作为搜索结构创建的。如果不是这种情况,那么您需要深度优先或广度优先搜索。
  • 二叉树的通常行为是升序。如果不是这种情况,只需切换条件即可。
  • @fmunshi,一棵树的重点是对节点进行排序。这是一个合理的假设,孩子们会被订购。
  • 什么是检查节点为NULL的原因?
猜你喜欢
  • 1970-01-01
  • 2013-04-14
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多