您的位置:首页 > 其它

【树】判断二叉树是否镜像 + 将一个二叉树变成其镜像

2016-07-11 21:17 375 查看
判断一个二叉树是否是对称的。

很简单:空节点 叶子节点是true,只有一个孩子是false。

代码:

bool isSymmetricalCore(TreeNode* left, TreeNode* right) {
if(left == NULL && right == NULL)
return true;
if(left == NULL || right == NULL)
return false;

return (left->val == right->val) && isSymmetricalCore(left->left, right->right) && isSymmetricalCore(left->right, right->left);
}

bool isSymmetrical(TreeNode* pRoot){
if(pRoot == NULL)
return true;

return isSymmetricalCore(pRoot->left, pRoot->right);
}


给定一个二叉树,将其变换成其镜像。

也很简单。。。

代码:

void Mirror(TreeNode *pRoot) {
if(pRoot == NULL)
return;

TreeNode *tmp = pRoot->left;
pRoot->left = pRoot->right;
pRoot->right = tmp;

Mirror(pRoot->left);
Mirror(pRoot->right);
}因为返回类型是void,所以不能用如下写法:(即tmp得不到值)
TreeNode* tmp = Mirror(pRoot->left);
pRoot->left = Mirror(pRoot->right);
pRoot->right = tmp;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: