&LeetCode226& 翻转二叉树

题目

翻转一棵二叉树。

示例:
输入:
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;
    }
};
发布了51 篇原创文章 · 获赞 20 · 访问量 2101

猜你喜欢

转载自blog.csdn.net/weixin_40482465/article/details/104437615