考察知识点:二叉树的遍历变形

题目描述

操作给定的二叉树,将其变换为源二叉树的镜像。
输入描述:

二叉树的镜像定义:源二叉树 
    	    8
    	   /  \
    	  6   10
    	 / \  / \
    	5   7 9  11
    	镜像二叉树
    	    8
    	   /  \
    	  10   6
    	 / \  / \
    	11  9 7  5

题解

分析

实质是树的遍历,每次递归需要将当前结点的左右子树调换
内置函数 swap 可直接实现左右子树调换,不需要申请临时变量

代码
/* 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) {
    	// pRoot 不为 NULL 时
        if(pRoot){
          // 调换 pRoot 左右子树
           swap(pRoot->left,pRoot->right);
           // 递归左子树
           Mirror(pRoot->left);
           // 递归右子树
           Mirror(pRoot->right);
        }
    }
};