public static int getTreeHeight(ParserNode node, int symbolSize) {
		if (node.isVar())
			return 0;

		int height = 0;

		List<ParserNode> children = node.getChildren();
		int childrenSize = children.size();
		if (childrenSize == 1) {
			// Ako čvor ima samo jedno dijete, stablo je visoko koliko je
			// visoko i podstablo tog djeteta
			height = getTreeHeight(node.getChildren().get(0), symbolSize);
		} else {
			// visina stabla jednaka je zbroju visina podstabala

			// gornja podstabla
			for (int i = 0; i < childrenSize / 2; i++) {
				height += getTreeHeight(children.get(i), symbolSize);
				// ako je i-to dijete operacija, onda ona ima svoje podstablo
				// pa je potrebno dodati još i razmak do sljedeceg podstabla
				if (children.get(i).isOp())
					height += symbolSize;
			}
			// gornja podstabla mogu biti barem symbolSize široka, zato jer je
			// sam sklop širok toliko
			if (height == 0)
				height = symbolSize;

			// flag koji pokazuje je li dodan jedan symbolSize previse
			boolean exceeds = false;
			// donja podstabla
			for (int i = childrenSize / 2; i < childrenSize; i++) {
				height += getTreeHeight(children.get(i), symbolSize);
				if (children.get(i).isOp()) {
					// ako je i-to dijete operacija, onda ona ima svoje
					// podstablo
					// pa je potrebno dodati još i razmak do sljedeceg podstabla
					// Prvo dodavanje symbolSizea je višak, pa se postavlja flag
					height += symbolSize;
					exceeds = true;
				}
			}
			if (exceeds)
				height -= symbolSize;
		}
		// podstablo operacije može biti visoko najmanje symbolSizes
		return symbolSize > height ? symbolSize : height;
	}