您的位置:首页 > 其它

Invert a binary tree

2015-12-31 10:45 316 查看

Invert a binary tree

Invert a binary tree.

For example

4
/   \
2     7
/ \   / \
1   3 6   9


to

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了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: