您的位置:首页 > 其它

[leetcode]: 226. Invert Binary Tree

2017-06-01 21:56 288 查看

1.题目

Invert a binary tree.

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


to

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


将一棵二叉树翻转。

左右子树,左右节点互换,相当于镜像对称。

2.分析

递归or迭代

3.代码

递归

class Solution {
public:
TreeNode* invertTree(TreeNode* root) {
if (root == NULL)
return root;
TreeNode* tempL= invertTree(root->right);
TreeNode* tempR = invertTree(root->left);
root->left = tempL;
root->right = tempR;
return root;
}
};


广度优先遍历,queue

class Solution {
public:
TreeNode* invertTree(TreeNode* root) {
if (root == NULL)
return root;
queue<TreeNode*> nodes;
nodes.push(root);
while (!nodes.empty()) {
TreeNode* node = nodes.front();
nodes.pop();
if (node->left != NULL)
nodes.push(node->left);
if (node->right != NULL)
nodes.push(node->right);
TreeNode* temp = node->left;
node->left = node->right;
node->right = temp;
}
return root;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode 二叉树