首页 > 代码库 > [剑指Offer] 18.二叉树的镜像
[剑指Offer] 18.二叉树的镜像
【思路1】递归,所有孩子交换再分别递归左右子树
1 /* 2 struct TreeNode { 3 int val; 4 struct TreeNode *left; 5 struct TreeNode *right; 6 TreeNode(int x) : 7 val(x), left(NULL), right(NULL) { 8 } 9 };*/ 10 class Solution { 11 public: 12 void Mirror(TreeNode *pRoot) { 13 if(pRoot == NULL) 14 return ; 15 TreeNode *temp = pRoot->left; 16 pRoot->left = pRoot->right; 17 pRoot->right = temp; 18 Mirror(pRoot->left); 19 Mirror(pRoot->right); 20 } 21 };
【思路2】非递归
1 /* 2 struct TreeNode { 3 int val; 4 struct TreeNode *left; 5 struct TreeNode *right; 6 TreeNode(int x) : 7 val(x), left(NULL), right(NULL) { 8 } 9 };*/ 10 class Solution { 11 public: 12 void Mirror(TreeNode *pRoot) { 13 if(pRoot == NULL) 14 return ; 15 stack<TreeNode*> StackNode; 16 StackNode.push(pRoot); 17 while(!StackNode.empty()){ 18 TreeNode* tree = StackNode.top(); 19 StackNode.pop(); 20 if(tree->left || tree->right){ 21 TreeNode* temp = tree->left; 22 tree->left = tree->right; 23 tree->right = temp; 24 } 25 if(tree->left) 26 StackNode.push(tree->left); 27 if(tree->right) 28 StackNode.push(tree->right); 29 } 30 } 31 };
[剑指Offer] 18.二叉树的镜像
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。