给定一个二叉树, 怎么判断成百万颗二叉树中是否存在相同的树?

面试中遇到的, 首先第一个办法说一个一个比较, 
第二种办法说想办法把二叉树这种不容易比较的数据结构变成一个容易比较的序列然后比较(null的地方用个#代替之类的), 面试官说如果这个二叉树很深, 序列就很长, 有没有办法不管二叉树多深都能整成一样长的序列, 不会了太菜了。。。
问问大家有没有说法啊
#笔试题目#
全部评论
刚才看hashtable的实现的时候, 突然开窍了。。。想到了 首先把二叉树序列化, null的节点用某个字符代替, 然后把这个序列做128进制转化, 因为ascll码的原因128进制的数就可以唯一代表这个字符序列。 然后的问题是这个数可能很大, 检索问题想到hashtable, 吧这个很大的数 % 某个质数, 整成hashtable, 这样查找就很快了。。。 哎面试官当时提示说哈希表了, 但是当时脑子根本转不动啊懵的不行, 还是菜。。。
点赞 回复 分享
发布于 2019-03-13 22:19
大佬不会是面的pony吧
点赞 回复 分享
发布于 2019-03-13 23:26
把序列化后的二进制折叠到固定长度,相同的折叠后肯定也相同。不过这有可能出现不相同序列折叠好相同,不过范围会大大缩小,在对候选检验一下就可以了
点赞 回复 分享
发布于 2019-03-13 23:17
先递归找结构一样的,再去比对数据?……感觉这个比直接找还复杂
点赞 回复 分享
发布于 2019-03-13 22:14

相关推荐

我就是0offer糕手:北大不乱杀
点赞 评论 收藏
分享
评论
点赞
14
分享

创作者周榜

更多
牛客网
牛客企业服务