leetcode-翻转二叉树-31

题目要求
  翻转一棵二叉树。

思路
  对于一个二叉树而言,只需要将每个节点下的左子树和右子树交换,如果为空就返回。

图解
输入:
在这里插入图片描述
输出:
在这里插入图片描述

代码实现

方法一

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;
}

猜你喜欢

转载自blog.csdn.net/weixin_43580319/article/details/114827097
今日推荐