代表自由树到二叉树

时间:2016-12-25 21:17:12

标签: data-structures tree

本练习来自书籍"algorithms in c++"。假设有一个像这样的免费树 enter image description here

第一个问题:我们可以将这个免费树表示为二叉树吗?

  

我认为我们不能将这个自由树表示为二叉树   因为有些节点的子节点超过2个。

第二个问题:我们可以从这个免费树中代表多少个有序树?

  

我无法理解这个问题。节点中没有键来决定如何创建有序树。

1 个答案:

答案 0 :(得分:1)

如果我正确地理解了这个问题,那么任务就是将树表示为二叉树,即使用二叉树的数据结构来表示任意树。从结构上说,这个问题需要一种方法来将任意树映射到二叉树。

该技术被描述为here;基本的想法是通过任意选择的孩子来表示节点c_1,...c_n的孩子a,这可能超过两个,比如说c_1,它成为{{a的左子。 1}}。作为c_1的正确孩子,存储下一个孩子c_2;等等。这意味着对于每个节点,一个子节点存储在左子树中,而在右子节中通过总是选择正确的子节点,存储子节点的“替代”的“兄弟姐妹”。该方法可以如下勾画。请承担相对较差的文字表示。

arbitrary tree

       a
   /  | |   \
c_1 c_2 c_3 c-4

binary tree

    a
   /
 c_1
    \
    c_2
       \
       c_3
          \
          c_4