剑指Offer-18.二叉树的镜像(C++/Java)
题目:
题目描述
操作给定的二叉树,将其变换为源二叉树的镜像。
输入描述:
二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5
分析:
求二叉树的镜像,实际上也就是将一个二叉树左右翻转。
从根节点开始将左右指针互换,再对左右子树递归执行下去即可。
8 / \ 6 10 / \ / \ 5 7 9 11 ↓ 8 / \ 10 6 / \ / \ 9 11 5 7
↓ 8 / \ 10 6 / \ / \ 11 9 7 5
程序:
c++
class Solution { public: void Mirror(TreeNode *pRoot) { if(pRoot == nullptr) return; TreeNode *p = pRoot->left; pRoot->left = pRoot->right; pRoot->right = p; Mirror(pRoot->left); Mirror(pRoot->right); } };
Java
public class Solution { public void Mirror(TreeNode root) { if(root == null) return; TreeNode temp = root.left; root.left = root.right; root.right = temp; Mirror(root.left); Mirror(root.right); } }