【问题标题】:leaf to root bst traversal叶到根的bst遍历
【发布时间】:2016-05-24 21:07:22
【问题描述】:

我只是想知道,给定一个指向其左右子节点的节点,是否有可能以某种方式获得整个 bst 树的有序打印?

我只知道这棵树是 BST。 我所知道的关于节点的所有信息就是他知道他的孩子是谁(左和右)。 我既无权访问根节点,也无权访问节点的父亲。 选择的节点是随机选择的,我需要返回整个树的顺序。

我认为没有足够的信息可以开始,我的朋友在面试时被问到这个问题,想知道这是一个无法解决的问题还是我不​​知道的技巧?

提前感谢您的帮助:)

【问题讨论】:

  • 如果你不能从你开始的地方“向上”遍历,你就不能打印整个树,因为你只能访问比你的起始节点更低级别的节点。
  • 要么是你的朋友没有正确理解/解释问题,要么是面试官一无所知,你是对的,如果你没有父母,就不可能向上遍历树指针

标签: java binary-search-tree inorder


【解决方案1】:

在这种情况下,你唯一能做的就是向下移动,因为你没有指向父节点的指针。您可以打印整个树的唯一情况是考虑的节点是根。

因此,您可以获得以当前节点为根的子树的有序打印。如果这个节点是根节点,那么它会打印整个树。如果不是,那就没有。

以防万一,顺序打印很简单:

def inorder(node):
    if node == null: return
    inorder(node.left)
    print node.data
    inorder(node.right)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多