- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
假设我必须比较两个二叉搜索树是否相似。现在,基本方法是递归公式,检查根是否相等,然后继续检查相应的右子树和左子树是否相等。
但是,如果二叉搜索树具有相同的层序遍历则它们是相同的,这样的说法是否正确?换句话说,是否每个 BST 都有唯一的层序遍历?
最佳答案
不,不是。
第一个:
1
\
\
2
\
\
3
第二个:
1
/ \
/ \
2 3
这两个级别的顺序将为 1 - 2 - 3。
由于表示具有 n 个节点的二叉树的信息论下界是 2n - THETA(log n)
,我认为任何简单的遍历都不能识别二叉树。
Google 搜索确认下限:
从 BST 到二叉树有一个简单的归约。考虑节点值为 1..n 的 BST。这些 BST 的数量是具有 n 个节点的二叉树的数量(您总是可以进行预序遍历并按该顺序插入值)。如果可以使用层序遍历来识别这样的 BST,则可以将 1 用于“层内”节点,将 0 用于“端层”节点。第一棵树变成“000”,第二棵树变成“010”。这将使一个 BST 只被识别为 n 位,不符合信息论下界。
关于algorithm - 是否每层序遍历都唯一定义一个BST?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17452078/
序 大家好呀,我是summo,这次来写写我在上班空闲(摸鱼)的时候做的一个小网站的事。去年阿里云不是推出了个活动嘛,2核2G的云服务器一年只要99块钱,懂行的人应该知道这个价格在业界已经是非常良心了
我尝试根据给定的级别顺序(BFS 顺序)构造 BST。我知道这是可能的,但我不知道我该怎么写。问题是我必须使用 BFS 序列。所以,我不能在这里使用递归,我必须迭代地编写我的程序......我发现这有
我是一名优秀的程序员,十分优秀!