假设我有2个叶子{1,2}并且我得到了他们的二进制代码(相同长度),这意味着我应该根据二进制代码构造二叉树。在构造二叉树之后,如果我遍历树,我应该为第1和第2行检索相同的二进制代码。
数据格式如下:
leave : binary code
1: 0 1 1 0 0 1 1 0 0 1 0 1 1 1 1 1 1 0 1 0 1 1 0 1
2: 0 1 0 0 0 1 0 0 0 1 0 1 1 1 1 1 1 0 1 0 0 1 0 1
例如,当二进制代码为0 1 1 0
时,我从树的根开始,当我看到0
时向左走,当我看到1
时向右走...
问题:如何根据给定的二进制代码构造二叉树? (请注意,我实际上处理了200000个叶子,因此处理了200000行二进制代码。所以我需要一种有效的方法来执行此操作。)
答案 0 :(得分:0)
您可能需要查看此内容
http://www.cs.princeton.edu/courses/archive/spring01/cs126/assignments/prefix.html
这应该可以让您深入了解创建所需树
需要做些什么