This immediately implies the number of odd-degree vertices must be even, which is the parity backbone of Eulerian tests.
<svg viewBox="0 0 600 400" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Eulerian decision and traversal sketch">
<defs>
<pattern id="euler-grid-pattern" width="40" height="40" patternUnits="userSpaceOnUse">
<path d="M 40 0 L 0 0 0 40" fill="none" stroke="#e5e7eb" stroke-width="1" opacity="0.4"/>
</pattern>
<linearGradient id="euler-node-gradient" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#dbeafe"/>
<stop offset="100%" stop-color="#93c5fd"/>
</linearGradient>
<marker id="euler-arrow-marker" markerWidth="10" markerHeight="10" refX="8" refY="3" orient="auto">
<path d="M0,0 L0,6 L9,3 z" fill="#f59e0b"/>
</marker>
</defs>
<rect x="0" y="0" width="600" height="400" fill="url(#euler-grid-pattern)"/>
<line x1="120" y1="120" x2="260" y2="90" stroke="#374151" stroke-width="2"/>
<line x1="260" y1="90" x2="420" y2="120" stroke="#374151" stroke-width="2"/>
<line x1="420" y1="120" x2="360" y2="260" stroke="#374151" stroke-width="2"/>
<line x1="360" y1="260" x2="200" y2="260" stroke="#374151" stroke-width="2"/>
<line x1="200" y1="260" x2="120" y2="120" stroke="#374151" stroke-width="2"/>
<line x1="260" y1="90" x2="200" y2="260" stroke="#374151" stroke-width="2"/>
<line x1="260" y1="90" x2="360" y2="260" stroke="#374151" stroke-width="2"/>
<polyline points="120,120 260,90 200,260 360,260 420,120 260,90" fill="none" stroke="#ef4444" stroke-width="3"/>
<circle cx="120" cy="120" r="18" fill="url(#euler-node-gradient)" stroke="#374151" stroke-width="2"/>
<circle cx="260" cy="90" r="18" fill="url(#euler-node-gradient)" stroke="#374151" stroke-width="2"/>
<circle cx="420" cy="120" r="18" fill="url(#euler-node-gradient)" stroke="#374151" stroke-width="2"/>
<circle cx="200" cy="260" r="18" fill="url(#euler-node-gradient)" stroke="#f59e0b" stroke-width="3"/>
<circle cx="360" cy="260" r="18" fill="url(#euler-node-gradient)" stroke="#f59e0b" stroke-width="3"/>
<text x="114" y="126" font-size="14" fill="#374151">A</text>
<text x="254" y="96" font-size="14" fill="#374151">B</text>
<text x="414" y="126" font-size="14" fill="#374151">C</text>
<text x="194" y="266" font-size="14" fill="#374151">D</text>
<text x="354" y="266" font-size="14" fill="#374151">E</text>
<path d="M 80 320 C 140 300, 210 300, 280 320" fill="none" stroke="#22c55e" stroke-width="2.5" marker-end="url(#euler-arrow-marker)"/>
<text x="70" y="344" font-size="14" fill="#374151">0 odd: Eulerian cycle</text>
<text x="320" y="344" font-size="14" fill="#374151">2 odd: semi-Eulerian trail</text>
</svg>