首页 > 其他 > 详细

剑指offer系列——18.二叉树的镜像

时间:2020-02-03 20:10:39      阅读:80      评论:0      收藏:0      [点我收藏+]

Q:操作给定的二叉树,将其变换为源二叉树的镜像。
输入描述:

二叉树的镜像定义:源二叉树
8
/ \
6 10
/ \ / \
5 7 9 11
镜像二叉树
8
/ \
10 6
/ \ / \
11 9 7 5

A:
1.递归完成

    void Mirror(TreeNode *pRoot) {
        if(pRoot){
            TreeNode* temp = pRoot->right;
            pRoot->right = pRoot->left;
            pRoot->left = temp;
            Mirror(pRoot->left);
            Mirror(pRoot->right);
        }
    }

2.栈的非递归

     void Mirror(TreeNode *pRoot) {
         if (pRoot == NULL)return;
         stack<TreeNode*> st;
         TreeNode* p = NULL;
         st.push(pRoot);
         while (st.size())
         {
             p = st.top();
             st.pop();
             swap(p->left, p->right);
             if (p->left)st.push(p->left);
             if (p->right)st.push(p->right);
         }
     }

3.队列的非递归

    void Mirror(TreeNode *pRoot) {
         if (pRoot == NULL)return;
         queue<TreeNode*> qu;
         TreeNode* p = NULL;
         qu.push(pRoot);
         while (qu.size())
         {
             p = qu.front();
             qu.pop();
             swap(p->left, p->right);
             if (p->left)qu.push(p->left);
             if (p->right)qu.push(p->right);
         }
    }

剑指offer系列——18.二叉树的镜像

原文:https://www.cnblogs.com/xym4869/p/12256620.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!