Diameter Better approach

What about this approach (is it good) :

  private int diameter;
	public int diameter() {
		this.diameter(this.root);
		return this.diameter;
	}
	private int diameter(Node node) {
		
		if(node==null)
			return 0;
		if(node.left==null&&node.right==null)
			return 1;
		int left=this.diameter(node.left);
		int right=this.diameter(node.right);
		this.diameter=Math.max(diameter, left+right);
		return 1+Math.max(left, right);
	}

Yes, it is perfectly good.