就是对二叉树及其子树,交换左右子树。 这种就是先序遍历的变种。 递归版本: 01 void mirror(struct Node* root) 02 { 03 if(root==NULL) 04 { 05 return ; 06 } 07 swap(&root->left, &root->right); 08 mirror(root->left); 09 mirror(root->right); 10 return ; 11 } 所以非递归可以用栈轻松模拟: view source print ? 01 void mirror(struct Node* root) 02 { 03 stack<Node*> stk; 04 stk.push_back(root); 05 while(!stk.empty()) 06 { 07 Node* ptr = stk.pop(); 08 if(ptr==NULL) 09 { 10 continue; 11 } 12 swap(&root->left, *root->right); 13 stk.push_back(root->left); 14 stk.push_back(root->right); 15 } 16 return ; 17 } 原文地址:点击打开链接