java.lang.NullPointerException 空指针异常相关问题

版权声明:本文章为原创文章,未经允许不得转载 https://blog.csdn.net/sinat_41815248/article/details/85985033

空指针 java.leng.NullPointerException
常见的几种原因是:
1.对象未初始化而直接引用对象值或者方法。
2.对象引用已经不存在或者被JDBC关闭。
一个经典的例子是JDBC connection已经关闭,ResultSet对象仍然被使用中,这个时候NullPointerException就被抛出。
3.违反某些Java容器的限制,读写Null 值。
4.例如 java.util.HashTable,它不接受Null 作为Key或者Value,如果试图用Null作为Key去读取HashTable将会得到NullPointerException。
Java NullPointerException做为Java Runtime 异常,在开发中减少这样错误的发生就是对代码完成Junit的单元测试,对于一些重要的代码要提高code review的次数从而提高代码质量。

在leetcode刷题时有时会遇到这个异常,后来发现了错误所在:
872. 叶子相似的树
请考虑一颗二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。

给定一颗叶值序列为 (6, 7, 4, 9, 8) 的树。

如果有两颗二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。

如果给定的两个头结点分别为 root1 和 root2 的树是叶相似的,则返回 true;否则返回 false 。

自己的答案(4ms)

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public boolean leafSimilar(TreeNode root1, TreeNode root2) {
        List<Integer> a=new ArrayList<>();
        List<Integer> b=new ArrayList<>();
        leaf(root1,a);
        leaf(root2,b);
        if(a.size()!=b.size()) return false;
        for(int i=0;i<a.size();i++){
            if(a.get(i)!=b.get(i)) return false;
        }
        return true;
    }
    public void leaf(TreeNode root,List<Integer> list){
        if(root!=null) {    //由于函数无定义返回类型,不可写作if(root==null) ;
                            //接着又if (root.left==null&&root.right==null) list.add(root.val);  这样会出现空指针异常
            if(root.left==null&&root.right==null) list.add(root.val);
        leaf(root.left,list);
        leaf(root.right,list);
        };
    }
}

猜你喜欢

转载自blog.csdn.net/sinat_41815248/article/details/85985033