二叉树? 翻转!
题目
翻转一棵二叉树。
例子
示例:
输入:
-----4
---- / \
----2–7
—/ \ -/ \
–1 3 6 9
输出:
----4
----/ \
– 7 - 2
–/ \ - / \
-9 6 3 1
题目分析
- 翻转二叉树
左右子树对称交换
- 一颗二叉树对称
左右子树的指针交换 - 二叉树对称
其子树也对称 ==> 递归
解题思路
过程
对于当前根节点
交换左右子树指针指向内容
- 左子树存在 ==> 将左子树对称
- 右子树存在 ==> 将右子树对称
代码如下
class Solution {
public:
TreeNode* invertTree(TreeNode* root) {
if(!root) return root;
TreeNode* temp;
temp = root->left;
root->left = root->right;
root->right = temp;
if(root->left) invertTree(root->left); //递归左子树对称
if(root->right) invertTree(root->right); //递归右子树对称
return root;
}
};