二叉树的镜像

来源:互联网 发布:chart.js 使用xml 编辑:程序博客网 时间:2024/06/09 23:17

剑指offer面试题19

题目:
操作给定的二叉树,将其变换为源二叉树的镜像。
二叉树的镜像定义:
源二叉树 :
8
/ \
6 10
/ \ / \
5 7 9 11
镜像二叉树:
8
/ \
10 6
/ \ / \
11 9 7 5

分析:
1、先序遍历这棵树的每个结点
2、如果遍历到的结点有子结点,交换它的两个子结点
3、交换完所有非叶子节点的左右子结点后,就得到了树的镜像

/*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 ;        //递归结束条件。遍历完所有非叶子结点后结束        if(pRoot->left == NULL && pRoot->right == NULL)            return ;        //交换左右结点        TreeNode *temp = pRoot->left;        pRoot->left = pRoot->right;        pRoot->right = temp;        if(pRoot->left)        {             Mirror(pRoot->left);           }        if(pRoot->right)        {             Mirror(pRoot->right);           }    }};
0 0
原创粉丝点击