图像数据结构

时间:2011-12-21 04:01:06

标签: algorithm data-structures tree

图像(方形图像)可以存储为树:如果图像是白色,则节点是白色;如果图像是黑色,则节点是黑色;如果图像是黑色,则节点是混合的。白色和黑色节点是叶子,而混合节点将恰好有4个子节点,代表图像中的4个象限。给定2个图像(树),找到代表其交叉点的图像。 (交点:B ^ B - > B,B ^ W - > W,W ^ W-> W) 这是Google面试问题

2 个答案:

答案 0 :(得分:1)

这是一种简单的方法:使用相同的顺序同时遍历两棵树。在执行此操作时构建输出树。然后:

  1. 如果在两个树中都看到混合节点,则输出混合节点
  2. 如果您在一棵树中看到混合节点,而在另一棵树中看到一个白色节点,则输出一个白色节点(并忽略遍历中的混合节点)
  3. 如果您在一棵树中看到混合节点,而在另一棵树中看到一个黑色节点,请将混合节点及其子节点复制到输出树
  4. 如果看到两个白色节点,则输出一个白色节点
  5. 如果您看到两个黑色节点,则输出一个黑色节点
  6. 这有可能创建一个实际上只有白孩子的混合节点,所以你可能需要一个压缩步骤来遍历树,折叠只有白孩子的混合节点。

    编辑:我认为您可以通过让您的递归知道下面是否找到输出黑色节点来避免压缩步骤(如果答案为否,则放入白叶)。

答案 1 :(得分:-1)

由于两者都表示为二叉树,因此您必须从根开始遍历树结构,并随时检查两个树中节点的颜色,并将结果存储在另一个树中。如果是黑色或白色,则停止进一步穿越。否则,如果它们中的任何一个混合在该节点中进一步遍历,直到您发现它们都是单色的。