如何判断一个序列是不是二叉排序树的查找序列?

可不可以这样设想,从第二个元素开始,若该元素大于前一个元素a,则该元素后边的元素均小于a,若该元素小于前一个元素a,则该元素后边的元素均大于a,然后依次检测到最后,这样判... 可不可以这样设想,从第二个元素开始,若该元素大于前一个元素a,则该元素后边的元素均小于a,若该元素小于前一个元素a,则该元素后边的元素均大于a,然后依次检测到最后,这样判断对吗
教材上的答案是:设序列最后一个元素也就是要查找的元素为a,将序列依次分离为大于a和小于a的两个序列,若这两个序列均有序,则序列是二叉排序树的查找序列。
不过我感觉这个答案代码比较繁琐,不知道我上边提出的设想对不对。
展开
 我来答
百度网友386b78a
2018-10-14
知道答主
回答量:2
采纳率:0%
帮助的人:1735
展开全部
你的设想很好,这是根据二叉排序树的性质可以推出的判断方法。
事实上这种思路也是选择题中对这种题型的快速判断方法,在本题中代码也足够简洁。不过你的描述写反了,应该是如果后继元素大于前一个元素A,则后面的所有元素均应大于A,反之则均应都小于A。
不过这种描述挺绕,我一般直接这样描述。从第一个元素开始直到循环至列尾,逐个判断,如果它的后继元素比他大,那么后面的所有元素均应比他大,反之均应比他小。
1.比如46,36,18,28,35这个序列
46比36大,那么46应该比36后面的18 28 35都大,没问题
36比18大,那么36应该比18后面的28 35都大,没问题
18比28小,那么18应该比28后面的35都小,没问题
28比35小,到序列尾部了...
因此该序列确实是二叉排序树的查找序列。
2.再比如28 36 18 46 35这个序列
28比36小,那么28应比36后面的18 46 35都小。
欸,28比18大呀,这说明该序列就不是二叉排序树的查找序列了。
百度网友b1f2f1e
推荐于2017-11-26 · TA获得超过275个赞
知道小有建树答主
回答量:141
采纳率:50%
帮助的人:86.8万
展开全部
你的理解我大概明白了,不过好像你讲反了,应该是如果序列中,当前元素比前一个元素大,那么后面元素都会比前一个元素大,如果当前元素比前一个元素小,那么后面元素也都会比前一个元素小。

你的理解和教材上的说法,实际上都是根据二叉排序树的特性得到的结论,意思是一样的,没什么问题。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式