题目
翻转一棵二叉树。
示例:
输入:
4
/
2 7
/ \ /
1 3 6 9
输出:
4
/
7 2
/ \ /
9 6 3 1
来源:力扣(LeetCode)
思路
翻转二叉树,树的基本操作之一;
此处做法与二叉树的层序遍历一样,需要用到queue;
首先,将根节点放入队列中;
然后;从队列中取出来,交换其左右节点;
以此类推直到队列中木有节点了停止循环,返回root即可。
C++代码
class Solution {
public:
TreeNode* invertTree(TreeNode* root)
{
if (root == NULL)
{
return NULL;
}
queue<TreeNode*> q;
q.push(root);
while (!q.empty())
{
TreeNode *node = q.front();
q.pop();
TreeNode *tmp = node -> left;
node -> left = node -> right;
node -> right = tmp;
if (node -> left != NULL)
{
q.push(node -> left);
}
if (node -> right != NULL)
{
q.push(node -> right);
}
}
return root;
}
};