显然是递归。
总结求一棵树的镜像的过程如下:
- (1)先序遍历这棵树的每一个节点,
- (2)如果遍历到的节点有子节点(子树),就交换它的两个子节点(子树);
void BinaryTreeMirror(BinaryTreeNode* root)
{
if (!root)
return 0;
if (!root->lft && !root->rgt)
return;
// 叶子节点
swap(root->lft, root->rgt);
if (root->lft)
BinaryTreeMirror(root->lft);
if (root->rgt)
BinaryTreeMirror(root->rgt);
}