JZ18 二叉树的镜像*
题目描述
操作给定的二叉树,将其变换为源二叉树的镜像。
输入描述:
二叉树的镜像定义:源二叉树
8
/ \
6 10
/ \ / \
5 7 9 11
镜像二叉树
8
/ \
10 6
/ \ / \
11 9 7 5思路
求二叉树的过程:
(1)交换根节点的左、右子树
(2)交换值为10的节点的左、右子节点;
(3)交换值为6的节点的左、右子节点。
总结一下过程:先前序遍历这棵树的每个节点,如果遍历到的节点有子节点,就交换它的两个子节点。交换完所有非叶子节点的左、右子节点后,就得到了树的镜像。
代码
class Solution {
public:
void Mirror(TreeNode *pRoot) {
if(pRoot==NULL)
return;
if(pRoot->left==NULL&&pRoot->right==NULL)
return;
TreeNode* temp;
Mirror(pRoot->left);
Mirror(pRoot->right);
temp=pRoot->left;
pRoot->left=pRoot->right;
pRoot->right=temp;
}
};
查看17道真题和解析
正浩创新EcoFlow公司福利 644人发布