18二叉树的镜像

 1 二叉树的镜像
 2 //操作给定的二叉树,将其变换为源二叉树的镜像。
 3 //二叉树的镜像定义:源二叉树 
 4             8
 5            /  \
 6           6   10
 7          / \  / \
 8         5  7 9 11
 9         镜像二叉树
10             8
11            /  \
12           10   6
13          / \  / \
14         11 9 7  5
15 
16 //思想:如果根节点有左右结点,则直接交换左右结点。然后进行递归即可。关于二叉树的问题,首先
17 //        要想到递归,从简单的条件考虑,然后再递归左右子树。
18 struct TreeNode
19 {
20     int val;
21     TreeNode* left;
22     TreeNode* right;
23     TreeNode(int x):val(x), left(NULL), right(NULL){}
24 };
25 class Solution
26 {
27 public:
28     void Mirror(TreeNode* pRoot)
29     {
30         if (pRoot == NULL)
31         {
32             return;
33         }
34         if (pRoot->left == NULL && pRoot->right == NULL)
35         {
36             return;
37         }
38         TreeNode* pTemp = pRoot->left;
39         pRoot->left = pRoot->right;
40         pRoot->right = pTemp;
41         if (pRoot->left)
42         {
43             Mirror(pRoot->left);
44         }
45         if (pRoot->right)
46         {
47             Mirror(pRoot->right);
48         }
49         return ;
50     }
51 };

 

posted @ 2017-08-21 10:58  繁星的夜空2012  阅读(111)  评论(0)    收藏  举报