java-lintcode阶梯训练第三章

        今天更lintcode的阶梯训练中,《剑指Offer》的第三章所有题目。

        粘一个里面代码中我觉得比较满意的代码风格

/**
     * @param T1, T2: The roots of binary tree.
     * @return: True if T2 is a subtree of T1, or false.
     */
    public static boolean isSubtree(TreeNode T1, TreeNode T2) {
        // write your code here
    	if(isSameTree(T1,T2)){
    		return true;
    	}
    	if(T1 == null){
    		return false;
    	}
    	return isSubtree(T1.left,T2) || isSubtree(T1.right,T2);
    }
    /**
    * isSameTree: 判断T1和T2是否是相同
    * @param T1
    * @param T2
    * @return 
    * boolean  返回类型
     */
    private static boolean isSameTree(TreeNode T1, TreeNode T2){
    	if(T1 == null && T2 == null){
    		return true;
    	}
    	if(T1 == null || T2 == null){
    		return false;
    	}
    	if(T1.val != T2.val){
    		return false;
    	}
    	if(isLeafe(T1) && isLeafe(T2) && T1.val == T2.val){
    		return true;
    	}
    	return isSameTree(T1.left,T2.left) && isSameTree(T1.right, T2.right);
    }
    /**  
    * isLeafe: 判断树T是否是叶子节点
    * @param T
    * @return 
    * boolean  返回类型   
    */
    private static boolean isLeafe(TreeNode T){
    	return T != null && T.left == null && T.right == null;
    }

          一个好的代码风格确实挺重要的。个人觉得好的代码风格应该至少满足以下三点:

         1. 有注释,有注释,有注释。。。。。重要的事说三遍,最近两年我才发现,好的注释绝对是最重要的代码风格之一(个人觉得没有之一)。

         2. 变量的定义清晰明白

         3. 方法尽量短小精悍,一个方法不要太大。前两个月刚维护完一个有三百多行代码,并且没有一点注释,且变量定义都是这种int i,int j,Bean b。。。  这种的代码。。。  无力吐槽啊。。。。

        第三章的训练里面,个人感觉题目140,快速幂还是有点意思的,其他的就是普通训练。。。   快速幂见博客:http://709002341.iteye.com/admin/blogs/2269919

你可能感兴趣的:(java-lintcode阶梯训练第三章)