调整数组顺序使奇数位于偶数前面&&判断t1树中是否含有与t2树相同的子树&&合并二叉树

101 阅读1分钟

NC77 调整数组顺序使奇数位于偶数前面(一)

题目链接

1、解题思路

我小学弟弟都会做的题目

2、代码
import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param array int整型一维数组 
     * @return int整型一维数组
     */
    public int[] reOrderArray (int[] array) {
        int[] temp = new int[array.length];
        int l2 = 0;
        int l1 = 0;
        for (int i : array) {
            if (i % 2 == 0) {
                temp[l2++] = i;
            } else {
                array[l1++] = i;
            }
        }
        for (int i = l1; i < array.length; i++) {
            array[i] = temp[i - l1];
        }
        return array;
    }
}

NC98 判断t1树中是否含有与t2树相同的子树

题目链接

1、解题思路

这个题目需要一个复制函数,判断两个树是否完全相同。而且在主函数递归调用的时候,注意root1为空的时候。

2、代码
import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 * }
 */

public class Solution {
    /**
     * 
     * @param root1 TreeNode类 
     * @param root2 TreeNode类 
     * @return bool布尔型
     */
    private boolean isSame(TreeNode node1, TreeNode node2) {
        if (node1 == null && node2 == null) {
            return true;
        } else if (node1 == null) {
            return false;
        } else if (node2 == null) {
            return false;
        } else if (node1.val == node2.val) {
            return isSame(node1.left, node2.left) && isSame(node1.right, node2.right);
        } else {
            return false;
        }
    }

    public boolean isContains(TreeNode root1, TreeNode root2) {
        if (root1 == null) {
            return false;
        }
        if (isSame(root1, root2)) {
            return true;
        } else {
            return isContains(root1.left, root2) || isContains(root1.right, root2);
        }
    }
}

NC177 合并二叉树

题目链接

1、解题思路

就递归调用吧

2、代码
import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 * }
 */

public class Solution {
    /**
     * 
     * @param t1 TreeNode类 
     * @param t2 TreeNode类 
     * @return TreeNode类
     */
    public TreeNode mergeTrees (TreeNode t1, TreeNode t2) {
        if (t1 == null) {
            return t2;
        } else if (t2 == null) {
            return t1;
        } else {
            int val = t1.val + t2.val;
            TreeNode root = new TreeNode(val);
            root.left = mergeTrees(t1.left, t2.left);
            root.right = mergeTrees(t1.right, t2.right);
            return root;
        }
    }
}