剑指offer28题

题目描述

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

输入描述:

二叉树的镜像定义:源二叉树
    	    8
    	   /      	  6   10
    	 / \  /     	5  7 9 11
    	镜像二叉树
    	    8
    	   /      	  10   6
    	 / \  /     	11 9 7  5废话不多说,直接强行上代码。树的创建和打印已经封装好,直接调用。
package com.algorithm04;

import com.tools.TreeBinaryFunction;
import com.tools.TreeNode;

public class Algorithm27 {

    public static void Mirror(TreeNode root){
        if(root!=null){
            TreeNode temp = new TreeNode(0);
            temp = root.left;
            root.left = root.right;
            root.right = temp;
            if(root.left!=null)
                Mirror(root.left);
            if(root.right!=null)
                Mirror(root.right);
        }

    }

    public static void main(String[] args) {
        TreeNode treeNode = new TreeNode(0);
        treeNode = TreeBinaryFunction.CreateTreeBinary(treeNode);
        Mirror(treeNode);
        TreeBinaryFunction.PrintTreeBinary(treeNode);
    }

}
时间: 2024-10-06 00:43:24

剑指offer28题的相关文章

剑指offer30题

定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数. 看到这个 题目,第一想法就是,我要不定义一个变量,指向当前栈中最小的值,每次入栈,就和最小值进行比较,如果比最小值小,则最小值指向该值,否则最小值依旧. 但很快遇到问题,如果在出栈时,最小值出来后,比最小值小的值呢?无法查到了啊! 于是思路出来了,用一个辅助栈,第一次将入栈的值放入,接下来每一次,和栈顶的值进行比较,如果比它小,则将该值放入,否则把栈顶的值再次放入. 此题参考剑指offer书的思路. 下面附代码. packa

剑指Offer--第16题 数值的整数次方

第16题 数值的整数次方 题目:给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 思路 看到有点懵,第一感觉觉得是不是应该考虑0的0次或者负数情况,还有就是浮点类型没办法使用"="号,最后自己以偷懒的方式直接调用Java的API,如果面试题中不让调用库函数,那么基本上这题就是挂了可能. 以上题目描述来自牛客,没有对使用做限制.真正的剑指offer上有限制条件不得使用库函数,同时不需要考虑大数问题. 自己的low代码 publ

剑指offer28 字符串的排列

1.全局变量可以在最后去定义并初始化,不一定非要在开头 2.此题有一种特殊情况需要考虑,比如字符串是"aa",那输出应该是"aa",而不是"aa,aa",即相同的不输出.实现这个处理用了c++中的容器set,set不保存重复元素.在存储的时候,遇到相同的元素,set不会把相同的元素保存进set.clear是清空set中的元素. 3. class Solution { public: vector<string> Permutation

剑指offer31题

题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列.(注意:这两个序列的长度是相等的) 模拟一个入栈操作,每次匹配即可.不想解释太多.直接看代码吧 package com.algorithm04; import java.util.Stack; public class Alg

剑指Offer28 最小的K个数

包含了Partition函数的多种用法 以及大顶堆操作 1 /************************************************************************* 2 > File Name: 28_KLeastNumbers.cpp 3 > Author: Juntaran 4 > Mail: [email protected] 5 > Created Time: 2016年08月31日 星期三 19时45分41秒 6 *******

剑指offer47题

题目:在一个mXn的棋盘的每一格放有一个礼物,每个礼物都有一定的价值(价值大于0).你可以从棋盘的左上角开始拿格子里的礼物,并每次向左或者向下移动一格,直到到达棋盘的右下角.给定一个棋盘及其上面的礼物,请计算你最多能拿到多少价值的礼物? 1 10  3 8 12   2  9 6 5 7  4  11 3 7  16 5 可以看到,价值最大的就是,1->12->5->7->7->16->5.即标下划线的数字. 那么现在,最好的方法就是动态规划了.这就是一道非常简单的动态

剑指offer42题(2)

在网上查了另外一种方法,其实也算同一种.有一些动态规划的思想.代码如下: package com.algorithm04; public class Algorithm42_2 { public int maxSumInSubArray(int[] array){ if(array.length<0) return 0; if(array.length==1) return array[0]; int max,begin,end,len; int[] c = new int[100]; begi

剑指offer42题

HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决.但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止).你会不会被他忽悠住?(子向量的长度至少是1) package com.algorithm05; public class Algorithm42

剑指offer55题

输入一棵二叉树,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度. package com.algorithm05; import com.tools.TreeBinaryFunction; import com.tools.TreeNode; public class Algorithm55 { public static int TreeDepth(TreeNode root) { if(root==null) return 0; int