给定一棵二叉树的根节点 root
,翻转这棵二叉树,并返回其根节点。例子如下:
struct TreeNode* invertTree(struct TreeNode* root){
if(root==NULL) return NULL;
struct TreeNode* left=invertTree(root->left);
struct TreeNode* right=invertTree(root->right);
root->right=left;
root->left=right;
return root;
}
主要递归过程:
对于下面的二叉树:
1
/ \
2 3
/ \ / \
4 5 6 7
要翻转节点 2 的子树。
首先,递归调用 `invertTree` 函数,处理节点 2 的子树,对节点 4 和节点 5 分别进行翻转:
对节点 4 进行翻转:
由于节点 4 的左右子树都为空,无需进行翻转操作,直接返回节点 4 的指针。
4
对节点 5 进行翻转:
同样地,由于节点 5 的左右子树都为空,无需进行翻转操作,直接返回节点 5 的指针。
5
然后,将节点 4的指针赋值给结点2的右孩子,将节点 5 的指针赋值给节点 2 的左孩子。
最终,得到如下结果:
1
/ \
2 3
/ \ / \
5 4 6 7