題目:請(qǐng)完成一個(gè)函數(shù),輸入一個(gè)二叉樹,該函數(shù)輸出它的鏡像。
public TreeNode MirrorTree1(TreeNode root)
{
if (root == null || (root.left == null && root.right == null)) return root;
var temp = root.left;
root.left = root.right;
root.right = temp;
MirrorTree1(root.left);
MirrorTree1(root.right);
return root;
}
public class TreeNode
{
public int val;
public TreeNode left;
public TreeNode right;
public TreeNode(int x)
{
val = x;
}
}
我們先前序遍歷這棵樹的每個(gè)結(jié)點(diǎn),如果遍歷到的結(jié)點(diǎn)有子結(jié)點(diǎn),就交換它的兩個(gè)子結(jié)點(diǎn)。當(dāng)交換完所有非葉子結(jié)點(diǎn)的左右子結(jié)點(diǎn)之后,就得到了樹的鏡像。(遞歸,每次都是左右交換就好了)