【发布时间】:2016-09-30 13:17:44
【问题描述】:
我正在尝试回答以下问题,但我不确定矩阵是二叉搜索树还是二叉树。有什么办法可以说吗?
在二叉搜索树上的两个节点之间找到最不共同的祖先。最小共同祖先是距作为两个节点的祖先的根最远的节点。例如,根是树上所有节点的共同祖先,但如果两个节点都是根左孩子的后代,那么该左孩子可能是最低的共同祖先。您可以假设两个节点都在树中,并且树本身遵循所有 BST 属性。函数定义应该类似于 question4(T, r, n1, n2),其中 T 是表示为矩阵的树,其中列表的索引等于存储在该节点中的整数,1 表示子节点, r 是表示根的非负整数,n1 和 n2 是表示两个节点的非负整数,无特定顺序。例如,一个测试用例可能是
question4([[0, 1, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[1, 0, 0, 0, 1],
[0, 0, 0, 0, 0]],
3,
1,
4)
【问题讨论】:
-
这个问题不是已经暗示它是一个搜索树吗&(...) 树本身符合所有 BST 属性。
-
是的,感谢您的回复。但我不相信我想知道它是否真的是 BST 的问题
-
如果我正确理解了这个表示,那么
2没有连接到任何其他节点(假设从零开始索引)。因此,它根本不是树。除此之外,链接显然是隐含的。即,您需要自己维护 BST 属性。您可以检查是否可以从矩阵构建 BST。 -
(我这样解释矩阵:(3, ((0, 1), 4) - 请举例说明如何解释矩阵。行号对应于存储的值?!)
-
谢谢@NicoSchertler,我不明白你从哪里得到 2?