[剑指Offer]27-二叉树的镜像
题目链接
题意
输入一棵二叉树,输出它的镜像。
思路
前序遍历一遍,若遍历到的节点是非叶节点,就交换它的左右子节点。
相关
遇到数据结构相关问题,比如二叉树、数组、链表等,有画图分析的意识。
一些题目边界条件的处理也可从画图分析得到。
代码(Java)
原地版
class Solution {
public TreeNode mirrorTree(TreeNode root) {
if(root==null){
return null;
}
if(root.left!=null||root.right!=null){
TreeNode tmp=root.left;
root.left=root.right;
root.right=tmp;
}
mirrorTree(root.left);
mirrorTree(root.right);
return root;
}
}
新树版
class Solution {
public TreeNode mirrorTree(TreeNode root) {
if(root==null){
return null;
}
TreeNode node=new TreeNode(root.val);
node.left=mirrorTree(root.right);
node.right=mirrorTree(root.left);
return node;
}
}
代码(C++)
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
class Solution {
public:
void Mirror(TreeNode *pRoot) {
if(pRoot!=nullptr){
if(pRoot->left!=nullptr||pRoot->right!=nullptr){
TreeNode* pTemp=pRoot->left;
pRoot->left=pRoot->right;
pRoot->right=pTemp;
if(pRoot->left!=nullptr){
Mirror(pRoot->left);
}
if(pRoot->right!=nullptr){
Mirror(pRoot->right);
}
}
}
}
};
posted on 2019-03-02 10:32 coding_gaga 阅读(134) 评论(0) 编辑 收藏 举报
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步