我有一个霍夫曼二叉树。我需要遍历树直到我到达每个叶子,并且对于每个叶子,我需要“保存”该叶子节点的成员,并将所有这些变量保存在树外的数组中。
假设我有这棵树:
3\65
6\-1
3\70
9\-1
2\66
3\-1
1\67
16\-1
7\68
每个叶子(7 / 68,1 / 67,2 / 66,7 / 70,3 / 65)都有一个名为“encoding”的成员,它是一个字符串。
(即每个节点都有一个节点 - >左,节点 - >右,节点 - >编码)
让我们说编码如下:
7/68 got an encoding of 0
1/67 got an encoding of 100
2/66 got an encoding of 101
3/70 got an encoding of 110
3/65 got an encoding of 111
我可以遍历树并相对容易地打印这些值,但我需要做的是将这些字符串保存在树外的数组中。
我想不出如何将这些保存在树外。
答案 0 :(得分:0)
“将这些字符串保存在树外的数组中。”
评论:你确定你必须存储字符串吗?如果只是存储整数并在递归完成后创建字符串,那就更清晰了。
好的,无论如何(并且没有提供源代码)你只是:
在开始递归之前创建一个足够大的(*)数组
创建一个指针,用于写入数组的不同部分,将指针初始化为数组的开头。
将指针指向您的递归作为新的/附加函数参数。每次在递归中到达叶子
答案 1 :(得分:0)
据我所知,在霍夫曼代码实现中,您不必使用外部数组。实现它的最简单方法是在结构中添加另一个指针('next')。 每个元素都链接两次。一旦作为树的成员,一旦作为链表的成员。 这样就不需要新的结构了。