题目要求
翻转一棵二叉树。
思路
对于一个二叉树而言,只需要将每个节点下的左子树和右子树交换,如果为空就返回。
图解
输入:
输出:
代码实现
方法一
struct TreeNode* invertTree(struct TreeNode* root){
if (root == NULL || (root->left == NULL && root->right == NULL))
{
return root;
}
struct TreeNode* tmp = root->left;
root->left = root->right;
root->right = rmp;
invertTree(root->left);
invertTree(root->right);
return root;
}
方法二
struct TreeNode* invertTree(struct TreeNode* root){
if (root == NULL)
{
return NULL;
}
struct TreeNode* right = root->right;
root->right = invertTree(root->left);
root->left = invertTree(right);
return root;
}