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

    题目:完成一个函数,输入一个二叉树,该函数输出它的镜像

    分析:何为镜像?

    image

    首先我们先去遍历头结点,如果不为空,那么我们就要继续遍历其左子树和右子树,如果不为空就进行一个交换,这里要说明的是:树的根节点与其左右子树之间是采用指针的形式进行一个连接的,也就是你交换了左右子树(比如 10 6),但是子树(10,6)下面对应的子树(比如10 对应11,9,  6对应7,5)之间的连接是不变的。

    直到其左右子树为空的时候就停止。

    给定一个二叉树的结点定义:

    struct BinaryTreeNode{
        int m_pValue;
        BinaryTreeNode *m_leftTreeNode;
        BinaryTreeNode *m_rightTreeNode;
    };

    如何输出它的镜像输出?

    BinaryTreeNode* mirrorRecursively(BinaryTreeNode *pNode)
    {
        if(pNode==NULL)
            return NULL;
        BinaryTreeNode *mirrorTree=NULL;
        if(pNode->m_leftTreeNode!=NULL&&pNode->m_rightTreeNode!=NULL)  
        {
           BinaryTreeNode *tempTree=pNode->m_leftTreeNode;
           pNode->m_leftTreeNode=pNode->m_rightTreeNode;
           pNode->m_rightTreeNode=tempTree;
           mirrorTree=pNode;
        }
        if(pNode->m_leftTreeNode)
            mirrorTree->m_leftTreeNode= mirrorRecursively(pNode->m_leftTreeNode);
        if(pNode->m_rightTreeNode)
            mirrorTree->m_rightTreeNode= mirrorRecursively(pNode->m_rightTreeNode);
    
        return mirrorTree;
    }
  • 相关阅读:
    ES集群性能调优链接汇总
    【转】dmesg 时间转换
    广师大笔记汉诺塔
    广师大python学习笔记求派的值
    155. 最小栈(c++)
    160. 相交链表(c++)
    论文 数据集总结
    论文阅读 总结 复习
    121. 买卖股票的最佳时机(c++)
    9. 回文数(c++)
  • 原文地址:https://www.cnblogs.com/menghuizuotian/p/3779465.html
Copyright © 2011-2022 走看看