zoukankan      html  css  js  c++  java
  • 二叉树镜像

    方法1:递归实现

    先把根节点的左右子树交换,再对左子树、右子树进行同样的操作。

    class Solution {
    public:
        void Mirror(TreeNode *pRoot) {
            if(pRoot == NULL)
                return;
            TreeNode *temp;
            temp = pRoot->left;
            pRoot->left = pRoot->right;
            pRoot->right = temp;
            Mirror(pRoot->left);
            Mirror(pRoot->right);
        }
    };
    

    方法2:非递归实现

    既可以用队列辅助,也可以用栈辅助。如果用队列,先把根节点的左右子树交换,然后把左右子树入队列,每次取出队首元素,交换左右子树,直到队列为空。

    class Solution {
    public:
        void Mirror(TreeNode *pRoot) {
            if(pRoot == NULL)
                return;
            queue<TreeNode*> qq;
            qq.push(pRoot);
            TreeNode *node, *temp;
            while(!qq.empty()){
                node = qq.front();
                temp = node->left;
                node->left = node->right;
                node->right = temp;
                qq.pop();
                if(node->left)
                    qq.push(node->left);
                if(node->right)
                    qq.push(node->right);
            }
        }
    };
    

    如果用栈,则先把根节点的左右子树交换,然后把左右子树分别入栈,每次取栈顶元素,交换左右子树,直到栈为空。

    class Solution {
    public:
        void Mirror(TreeNode *pRoot) {
            if(pRoot == NULL)
                return;
            stack<TreeNode*> ss;
            TreeNode *node, *temp;
            ss.push(pRoot);
            while(!ss.empty()){
                node = ss.top();
                ss.pop();
                temp = node->left;
                node->left = node->right;
                node->right = temp;
                if(node->left)
                    ss.push(node->left);
                if(node->right)
                    ss.push(node->right);
            }
        }
    };
    
  • 相关阅读:
    从03域控升级至2012
    Aundit使用记录文档
    exchange2010新特性
    MSDN介绍内容
    2013优秀博客
    邮箱协议
    不错的2010学习博客
    觉得UtraWebGrid老不稳定
    初体验:今天弄了下NetAdvantage赶紧写写,怕明天睡醒又忘了哦。
    在代码文件中设置控件的长宽这些是这样的。
  • 原文地址:https://www.cnblogs.com/jiaxblog/p/9652303.html
Copyright © 2011-2022 走看看