如何无歧义表示代数表达式满二叉树?解决分支交换歧义问题
满二叉树的无歧义表示问题
我有一个用于建模物理现象的满二叉树代数表达式模型,需要找到一种无歧义的方式来表示这类树。以下面三棵结构不同但代表相同信息的满二叉树为例:
A A A ____|____ ____|____ ____|____ | | | | | | B C C B C B __|__ __|__ __|__ | | | | | | D E D E E D
它们的各类遍历结果如下:
- INORDER(中序):DBEAC | CADBE | CAEBD
- PREORDER(前序):ABDEC | ACBDE | ACBED
- POSTORDER(后序):DEBCA | CDEBA | CEDBA
- LEVELORDER(层序):ABCDE | ECBDE | ECBED
可以看到,这三棵树只是分支位置交换,实际代表的信息相同,但结构图示和遍历结果都有差异。我需要一种方法,让这类等价的树输出完全相同的表示,不受图示或遍历结果差异的影响。
我的相关思考
- 该二叉树建模的物理现象会生成可观测的时间序列,我需要随机生成树和对应时间序列来制作机器学习训练数据。训练完成后,希望输入时间序列就能输出对应的树,歧义性表示会直接导致任务失效。
- 我用Python编码,已经能用类实现树的表示,随机生成树和时间序列的部分没问题。计划用LSTM神经网络完成任务,但缺乏经验,不确定无歧义树表示是不是避免机器学习流程问题的必要条件。
- 我觉得能对等价树输出相同结果的可逆哈希可能是解决方案,但还没设计出合适的哈希方法。
内容的提问来源于stack exchange,提问作者Alexandre de Castro Maciel
相关产品推荐
相关产品推荐

