(1)问题
给你一棵二叉树的根节点 root
,翻转这棵二叉树,并返回其根节点。
示例 1:
输入:root = [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1]
(2)思路
翻转二叉树,就是交换两个子节点,那么可以用递归法,逐层开始交换。递归法的三个条件:
1.确定参数和返回类型,参数只需要一个节点,返回类型没有要求,直接为void。
2.确定截止条件,节点为空时返回。
3.函数逻辑:就是交换两个子节点。
(3)解题流程
1.定义交换函数,用于交换两个节点。
2.判断节点是否为空,为空直接返回。
3.交换两个节点。
4.先递归左边,在递归右边。
代码实现:
void exchange(TreeNode* &node1,TreeNode* &node2)
{
TreeNode* temp = node1;
node1 = node2;
node2 = temp;
}
TreeNode* invertTree(TreeNode* root) {
if(root == nullptr) {
return nullptr;
}
exchange(root->left,root->right);
invertTree(root->left);
invertTree(root->right);
return root;
}