• (剑指Offer)面试题19:二叉树的镜像


    题目:

    操作给定的二叉树,将其变换为源二叉树的镜像。 

    二叉树的定义如下:

    struct TreeNode{
        int val;
        TreeNode* left;
        TreeNode* right;
    };
    输入描述:
    二叉树的镜像定义:源二叉树 
        	    8
        	   /  
        	  6   10
        	 /   / 
        	5  7 9 11
        	镜像二叉树
                8
        	   /  
        	  10   6
        	 /   / 
        	11 9  7  5

    思路:

    观察上面两个二叉树,很容易就可以得出下面求一棵树镜像的过程:

    先序遍历这棵树的每个结点,如果遍历到的结点有子结点,则交换它的两个子结点。当交换完所有非叶子结点的左右子结点之后,就得到了树的镜像。

    代码:

    struct TreeNode{
        int val;
        TreeNode* left;
        TreeNode* right;
    };
    
    void Mirror(TreeNode *pRoot){
        if(pRoot==NULL)
            return;
        if(pRoot->left==NULL && pRoot->right==NULL)
            return;
        TreeNode* tmp=pRoot->left;
        pRoot->left=pRoot->right;
        pRoot->right=tmp;
    
        if(pRoot->left)
            Mirror(pRoot->left);
        if(pRoot->right)
            Mirror(pRoot->right);
    }
    

    在线测试OJ:

    http://www.nowcoder.com/books/coding-interviews/564f4c26aa584921bc75623e48ca3011?rp=1

    AC代码:

    class Solution {
    public:
        void Mirror(TreeNode *pRoot){
    		if(pRoot==NULL)
                return;
            if(pRoot->left==NULL && pRoot->right==NULL)
                return;
            TreeNode* tmp=pRoot->left;
            pRoot->left=pRoot->right;
            pRoot->right=tmp;
            
            if(pRoot->left)
                Mirror(pRoot->left);
            if(pRoot->right)
                Mirror(pRoot->right);
        }
    };
  • 相关阅读:
    mysql联合查询更新数据库例子
    jquery绑定事件时如何向事件函数里传参数
    bootstrap栅格例子
    myeclipse 给类与方法添加注解模板方法
    response 返回js的alert()语句,中文乱码如何解决
    h5-圆角的使用-案例安卓机器人
    h5-拖拽接口
    h5-应用级缓存
    h5-sessionStorage储存的使用
    h5-localStorage储存的使用
  • 原文地址:https://www.cnblogs.com/AndyJee/p/4649164.html
Copyright © 2020-2023  润新知