private void drawNode(Graphics g, BinaryTreeNode node, int x1, int x2, int y) {
		if (node != null) {
			int x = (x1 + x2) / 2;

			g.setColor(Color.GRAY);
			g.fillOval(x - radius, y, 2 * radius, 2 * radius);
			g.setColor(Color.CYAN);
			g.drawString(node.getData() + node.weight, x - 8, y + radius+5);

			if (node.getlChild() != null) {
				// 
				int lx1 = x1;
				int lx2 = x - panelXBase / 2;
				g.setColor(Color.BLACK);
				g.drawLine(x, y + radius, (lx1 + lx2) / 2, y + panelYBase
						+ radius);
				drawNode(g, node.getlChild(), lx1, lx2, y + panelYBase);
			}

			if (node.getrChild() != null) {
				// Һ
				int rx1 = x + panelXBase / 2;
				int rx2 = x2;
				g.setColor(Color.BLACK);
				g.drawLine(x, y + radius, (rx1 + rx2) / 2, y + panelYBase
						+ radius);
				drawNode(g, node.getrChild(), rx1, rx2, y + panelYBase);
			}
		}
	}