0

二分探索木のルートを与え、そのミラーを作成するコードです。

def mirror(root):
    if root is None:
        pass
    else:
        mirror(root.left)
        mirror(root.right)
        temp = root.left
        root.left = root.right
        root.right = temp

まず、このコードは正しいですか?また、ここでの再帰は、最初にツリーの葉に到達し、巻き戻し時に参照を切り替えることになっていますか?

4

2 に答える 2

6

それは正しいですが、あまり Pythonic ではありません。

だけ書いたほうがいい

def mirror(root):
    if root is None:
        return
    mirror(root.left)
    mirror(root.right)
    root.left, root.right = root.right, root.left

この問題では、どちらの順序でも再帰できます (親の前または後のリーフを逆にする)。

于 2013-03-10T17:36:36.683 に答える