图像(方形图像)可以存储为树:如果图像是白色,则节点是白色;如果图像是黑色,则节点是黑色;如果图像是黑色,则节点是混合的。白色和黑色节点是叶子,而混合节点将恰好有4个子节点,代表图像中的4个象限。给定2个图像(树),找到代表其交叉点的图像。 (交点:B ^ B - > B,B ^ W - > W,W ^ W-> W) 这是Google面试问题
答案 0 :(得分:1)
这是一种简单的方法:使用相同的顺序同时遍历两棵树。在执行此操作时构建输出树。然后:
这有可能创建一个实际上只有白孩子的混合节点,所以你可能需要一个压缩步骤来遍历树,折叠只有白孩子的混合节点。
编辑:我认为您可以通过让您的递归知道下面是否找到输出黑色节点来避免压缩步骤(如果答案为否,则放入白叶)。
答案 1 :(得分:-1)
由于两者都表示为二叉树,因此您必须从根开始遍历树结构,并随时检查两个树中节点的颜色,并将结果存储在另一个树中。如果是黑色或白色,则停止进一步穿越。否则,如果它们中的任何一个混合在该节点中进一步遍历,直到您发现它们都是单色的。