判断平衡二叉树

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/**
* 判断一棵树是否是平衡二叉树
*/
public class JudjeBalanceTree {
public static void main(String[] args) {
Node head = new Node(1);
head.left = new Node(2);
head.right = new Node(3);
head.left.left = new Node(4);
head.left.right = new Node(5);
head.right.left = new Node(6);
head.right.right = new Node(7);
System.out.println(isBalanceTree(head));
}

public static boolean isBalanceTree(Node head) {
boolean[] res = new boolean[1];
res[0] = true;
getHeight(head, 1, res);
return res[0];
}

public static int getHeight(Node head, int level, boolean[] res) {
if (head == null) {
return level;
}
int lH = getHeight(head.left, level + 1, res);
if (!res[0]) {
return level;
}
int rH = getHeight(head.right, level + 1, res);
if (!res[0]) {
return level;
}
if (Math.abs(lH - rH) > 1) {
res[0] = false;
}
return Math.max(lH, rH);
}
}

阅读更多

java

1.java

    阅读更多

    求数组中只出现一次的数

    求数组中只出现一次的数

    阅读更多

    求数组中只出现一次的数

    {1,2,3,4,1,2,3,4,5}

      阅读更多

      code_Hanoi

      汉诺塔

      阅读更多

      code

      求斐波那契数列

        阅读更多

        Canp_119

        位操作

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        22
        23
        24
        25
        26
        27
        28
        29
        30
        31
        32
        33
        34
        35
        36
        37
        38
        39
        40
        41
        //编写一个函数把指定的值存到这个整数中指定的几位;
        //e: 原始值 | 存储值 | 起始位 | 结束位 | 返回值 |
        // 0x0 | 0x1 | 4 | 4 | 0x10 |
        // 0xffff | 0x123 | 15 | 4 | 0x123f |
        // 0xffff | 0x123 | 13 | 9 | 0xc7ff |
        //
        //1.设置一个make;将要设置的那几位置0,其他值不变;比如:~001111000000000 &
        //2.将要往进放的值的对应位调整好对齐。
        //3.用make 将放入值的其余位清零; 进行按位与& 0011110000000000
        //4.将第三步得到的值,与第一步得到的原值,进行按位or或操作;

        #include <stdio.h>
        #include <stdlib.h>
        int stare_bit_field(int original_value, int value_to_store, unsigned starting_bit, unsigned ending_bit)
        {
        unsigned int i;
        unsigned make = 0;
        for (i = starting_bit; i >= ending_bit; i--)
        {
        make |= 1 << i;
        }
        original_value = (~make)&original_value;
        value_to_store <<= ending_bit;
        value_to_store &= make;
        original_value |= value_to_store;
        return original_value;
        }
        int main()
        {
        int original_value;
        int value_to_store;
        unsigned starting_bit;
        unsigned ending_bit;
        printf("请输入 original_value, value_to_store, starting_bit, ending_bit:");
        scanf("%x %x %x %x",&original_value, &value_to_store, &starting_bit, &ending_bit);
        original_value = stare_bit_field(original_value, value_to_store, starting_bit, ending_bit);
        printf("%x", original_value);

        system("pause");
        return 0;
        }

        阅读更多

        code

        打印杨辉三角

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        22
        23
        24
        25
        26
        27
        28
        29
        30
        31
        32
        33
        34
        #include <stdio.h>
        #include <stdlib.h>
        int main()
        {
        int line ;
        int i,j;
        scanf("%d",&line);
        for (i = 0; i<line; i++)//打印第一部分
        {
        for (j = 0; j<line - i - 1; j++)
        {
        printf(" ");
        }
        for (j = 0; j<2 * i + 1; j++)
        {
        printf("*");
        }
        printf("\n");
        }
        for (i = line-1; i>0; i--)//打印第二部分
        {
        for (j = 0; j<line-i; j++)
        {
        printf(" ");
        }
        for (j = 0; j<2*i-1; j++)
        {
        printf("*");
        }
        printf("\n");
        }
        system("pause");
        return 0;
        }

        阅读更多

        求最大公约数的三种方法

        求最大公约数的三种方法

        1.穷举法

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        22
        23
        24
        25
        26
        27
        28
        29
        30
        #include <stdio.h>
        #include <stdlib.h>
        int main()
        {
        // 1.穷举法:将两个数中较小的数做为被除数,,与输入的两个数相除取余,每除一次这个数 减1, 直到两个除式取余同时为0
        int i; //被除数
        int a =0;
        int b =0;
        int temp;
        scanf("%d,%d",&a,&b);
        printf("%d,%d\n", a, b);
        if (a > b)
        {
        i = b;
        }
        else
        {
        i = a;
        }
        for (i; i > 0; i--)
        {
        if (0 == a%i && 0 == b%i)
        {
        printf("%d\n", i);
        }
        }
        printf("%d\n", b);
        system("pause");
        return 0;
        }

        阅读更多

        no-title

        将数组的内容交换,两个数组一样大;

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        #include <stdio.h>
        int main()
        {
        int i;

        char a[5] = { "zhan" };
        char b[5] = {"1234"};
        int a_length = sizeof(a) / sizeof(a[0]);
        for (i = 0; i < a_length; i++)
        {
        int temp;
        temp = a[i];
        a[i] = b[i];
        b[i] = temp;
        }
        printf("%s\n", a);
        printf("%s\n", b);
        system("pause");
        return 0
        }

        阅读更多