Invert a binary tree.
4 / \ 2 7 / \ / \ 1 3 6 9to
4 / \ 7 2 / \ / \ 9 6 3 1
递归。。 神奇。
class Solution {
public:
TreeNode* invertTree(TreeNode* root) {
if(root == NULL)
return NULL;
TreeNode* temp = root->left;
root->left = invertTree(root->right);
root->right = invertTree(temp);
return root;
}
};
队列
class Solution {
public:
TreeNode* invertTree(TreeNode* root) {
if(root == NULL)
return NULL;
queue<TreeNode*> q;
q.push(root);
while(!q.empty())
{
int n = q.size();
for(int i = 0; i < n; ++i)
{
TreeNode* p = q.front();
TreeNode* temp = p->left;
p->left = p->right;
p->right = temp;
q.pop();
if(p->left)
q.push(p->left);
if(p->right)
q.push(p->right);
}
}
return root;
}
};stack
class Solution {
public:
TreeNode* invertTree(TreeNode* root) {
if(root == NULL)
return NULL;
stack<TreeNode*> s;
s.push(root);
while(!s.empty())
{
TreeNode* p = s.top();
s.pop();
TreeNode* temp = p->left;
p->left = p->right;
p->right = temp;
if(p->left)
s.push(p->left);
if(p->right)
s.push(p->right);
}
return root;
}
};
本文介绍了两种实现翻转二叉树的方法:递归方法和迭代方法。递归方法通过交换左右子节点来翻转整个树;迭代方法则利用队列或栈进行层次遍历并交换每一层节点的左右子节点。
636

被折叠的 条评论
为什么被折叠?



