leetcode 226. Invert Binary Tree
Invert a binary tree.
4 / \ 2 7 / \ / \ 1 3 6 9to
4 / \ 7 2 / \ / \ 9 6 3 1
AC;
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
struct TreeNode* invertTree(struct TreeNode* root) {
if(root==NULL){
return ;
}
struct TreeNode* node;
if(root->left!=NULL){
invertTree(root->left);
}
if(root->right!=NULL){
invertTree(root->right);
}
node=root->left;
root->left=root->right;
root->right=node;
return root;
}
if(root==NULL){
return ;
}
struct TreeNode* node;
if(root->left!=NULL){
invertTree(root->left);
}
if(root->right!=NULL){
invertTree(root->right);
}
node=root->left;
root->left=root->right;
root->right=node;
return root;
}
tips:开始准备想着遍历把值取出来,然后逆序,再遍历放回去。后来又发现只要遍历一次,遍历过程中交换左右子树即可。想出这个方法,对于菜鸟的我来说,很激动!~