Algorithm n元树的镜像?有人能解释一下吗?

Algorithm n元树的镜像?有人能解释一下吗?,algorithm,data-structures,tree,mirror,Algorithm,Data Structures,Tree,Mirror,这个问题是在亚马逊采访时提出的。我试图找到解决办法,但没有找到解决办法。任何人都可以通过细节来解决问题。这是一个相当标准的面试问题 这样想想这个问题,如果你站在一面镜子前,你的树会是什么样子。我鼓励你画一棵简单的树,站在镜子前,画出它的样子 完成此操作后,您可能已经意识到此问题几乎与反转树相同。反转的过程是,在每一级,交换左、右节点,并在且仅当子节点存在时继续遍历 下面是一些伪代码,让您开始: invert_bst(bst): bst's left node = bst's right

这个问题是在亚马逊采访时提出的。我试图找到解决办法,但没有找到解决办法。任何人都可以通过细节来解决问题。

这是一个相当标准的面试问题

这样想想这个问题,如果你站在一面镜子前,你的树会是什么样子。我鼓励你画一棵简单的树,站在镜子前,画出它的样子

完成此操作后,您可能已经意识到此问题几乎与反转树相同。反转的过程是,在每一级,交换左、右节点,并在且仅当子节点存在时继续遍历

下面是一些伪代码,让您开始:

invert_bst(bst):
    bst's left node = bst's right node
    if bst's left child is not null:
        invert_bst(bst left child)
    if bst's right child is not null:
        invert_bst(bst right child)
我强烈鼓励尝试实施这一解决方案


祝你在未来的面试中好运

很简单,镜像意味着原始节点的左节点变成镜像树的右节点。您可以使用预排序遍历,并继续添加节点,从原始节点的左侧到镜像节点的右侧,从原始节点的右侧到镜像节点的左侧

public Node createTreeMirror(Node root) {
    if (root == null) {
        return null;
    }
    Node mirror = new Node(root.data);
    mirror.right = createTreeMirror(root.left);
    mirror.left = createTreeMirror(root.right);
    return mirror;
}

什么样的树?二进制、n元还是别的?好吧,不管是哪一个,复制品应该是一个足够的起点。对。我在找n元树。我已经更新了我的问题。谢谢。二叉树是n元树的特例。镜像n元树的代码是镜像二叉树的一个非常简单的扩展。谢谢你的回答。没问题,如果答案对你有用,它通常会帮助社区将答案标记为正确!感谢您的解决方案。