版权声明:
本文由Faye_Zuo发布于http://www.cnblogs.com/zuofeiyi/, 本文可以被全部的转载或者部分使用,但请注明出处.
生完小儿子,产后一个月我就回到Java的学习里面来了。看到之前学习的代码,完全是恍如隔世,感觉一辈子也不想再碰程序。但是想着29岁的自己,也还年轻,不想在美国一辈子做全职妈妈,所以必须坚持和坚强。准备重新把之前的程序写一遍,我经历着一个人学习,一个人转行奋斗的孤独感。于是拼命想在图书馆找到学习的同伴,期待可以建一个转行群,共同学习,互相勉励。努力搭讪后,发现了两三个文科转CS的同伴,聊天加微信后,最后发现这种方法对我来讲其实还挺浪费时间的。因为大家方法都不一样,目标也不一样,这样反而把时间浪费在无聊的聊天中。对于我来讲,还是适合找牛一点的人直接指点迷津。于是我决定成为一个背奶转行CS的独行侠!
我花了大概十天时间把之前的程序又写了一遍,很枯燥。但是在这个过程中,自己对程序的理解好像又加深了那么一点点,特别是对面向对象的理解。之前对class、method、构造函数什么的觉得非常浆糊,现在说不清道不明的变得逐渐清晰起来了。看来学习程序就得写代码,突破不了这个心理障碍真的就学不动了。
然后讲讲这周的学习进度。这周我主要练习了leetcode上的三道题目,通过这三道题目的掌握,希望可以对二叉树(Binary Tree)和递归(recursion)有更加深入的了解。
一、Maximum Depth of Binary Tree(104)
Given a binary Tree,find its maximum depth.
public static void main(String[] args) {
TreeNode root1=new TreeNode(1);
root1.left=new TreeNode(2);
root1.right=new TreeNode(3);
root1.left.left=new TreeNode(8);
TreeNode root2=new TreeNode(1);
root2.left=new TreeNode(2);
root2.right=new TreeNode(3);
root2.left.left=new TreeNode(8);
Solution A= new Solution();
System.out.print(A.isSameTree(root1, root2));
}
public static class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) {
val = x;
}
}
public static class Solution {
public boolean isSameTree(TreeNode p, TreeNode q) {
if(p==null&&q==null){
return true;
}
if(p==null||q==null){
return false;
}
if(p.val!=q.val){
return false;
}
return isSameTree(p.left,q.left)&&isSameTree(p.right,q.right);
}
}
public boolean isBalanced(TreeNode root) {
int value=0;
if(root==null){
return true;
}
else{
int leftMaxNew=maxDepth(root.left);
int rightMaxNew=maxDepth(root.right);