二叉树的镜像
先序遍历
#include <iostream>
#include <stack>
#include <algorithm>
using namespace std;
struct TreeNode
{
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x)
: val(x), left(NULL), right(NULL)
{
}
};
class Solution
{
public:
void MirrorPre(TreeNode *root) {
if (root == NULL) {
return;
}
stack<TreeNode *> nstack;
TreeNode *node = root;
while (node != NULL || nstack.empty() != true) {
while (node != NULL) {
if (node->left != NULL && node->right != NULL) {
swap(node->left, node->right);
}
nstack.push(node);
node = node->left;
}//nstack.empty() == true
if (nstack.empty() != true) {
node = nstack.top();
nstack.pop();
node = node->right;
}// node == NULL
}
} //没能理解
//中序,后序
};