二叉树的镜像定义:源二叉树 8 / 6 10 / \ / 5 7 9 11 镜像二叉树 8 / 10 6 / \ / 11 9 7 5
递归方法:
/* 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 == NULL) return ; TreeNode * temp; if(pRoot->left || pRoot->right) { Mirror(pRoot->left); Mirror(pRoot->right); temp = pRoot->left; pRoot->left = pRoot->right; pRoot->right = temp; } } };
非递归方法:即用栈实现
class Solution { public: void Mirror(TreeNode *pRoot) { //非递归实现 if(pRoot==NULL) return; stack<TreeNode*> stackNode; stackNode.push(pRoot); while(stackNode.size()){ TreeNode* tree=stackNode.top(); stackNode.pop(); if(tree->left!=NULL || tree->right!=NULL){ TreeNode *ptemp=tree->left; tree->left=tree->right; tree->right=ptemp; } if(tree->left) stackNode.push(tree->left); if(tree->right) stackNode.push(tree->right); } } };