Invert a binary tree
Invert a binary tree.
For example
4 / \ 2 7 / \ / \ 1 3 6 9to
4 / \ 7 2 / \ / \ 9 6 3 1
思路
感觉自己一直把问题想复杂啊
代码1
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
struct TreeNode* invertTree(struct TreeNode* root) {
struct TreeNode *t,*t1,*t2;
if(root == NULL)
t = NULL;
else
{
t = (struct TreeNode*)malloc(sizeof(struct TreeNode));
t->val = root->val; //复制根节点
t1 = invertTree(root->left);
t2 = invertTree(root->right);
t->left = t2;
t->right = t1;
return t;
}
}
代码2
/**
* 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 NULL;
else{
struct TreeNode* tmp = root->left;
root-> left = invertTree(root->right);
root->right = invertTree(tmp);
return root;
}
}
这个else也可以去掉,因为已经return了