SO hakkında son bir soru esinlenerek ...
İkili ağacı aşağıdaki biçimde yazdırmak için bir işlev yazın:
3
/ \
1 5
\ / \
2 4 6
- Çıktı, bir düğüm çizgisini, ardından bir çizgiyi
/
ve\
ilişkileri gösteren karakterleri, ardından bir düğüm çizgisini, vb. İçermelidir. - Tüm düğümlerin tek bir karakter olarak temsil edilebildiğini varsayabilirsiniz.
- En düşük seviyedeki bitişik düğümler en az bir boşlukla ayrılmalı, daha sonraki düğümler uygun şekilde ayrılmalıdır.
- İki çocuklu düğümler tam olarak doğrudan çocuklarının ortasına yerleştirilmelidir.
- İlişki eğik çizgileri, ebeveyn ile uygun çocuk arasında (istediğiniz şekilde yuvarlak) olmalıdır.
Giriş:
Giriş, işlevinize bir argüman olarak sağlanacaktır. Ağacın tam yapısını belirtmeyeceğim, ancak gerçek bir ikili ağaç olarak kullanılabilir olmalıdır. Hayır "programımda ağaçlar, beklenen çıktıya rastlantısal olarak dizeler olarak gösterilmiyor".
Bir çıktı akışına yazdırabilir veya çıktıyı içeren bir dizeyi geri döndürebilirsiniz.
En kısa kod için puan, ama ben çok% 90 çalışan kısa bir çözüm yerine tamamen çalışan uzun bir çözüm tercih ediyorum.
Ödül için güncelleme:
Ödül için, ben (Doktor) küçük değişiklikler yapıyorum:
- Giriş STDIN, ARGV veya işlev bağımsız değişkeninden olabilir.
- Çıktının STDOUT'ta (veya
console.log
JS için) olması gerekir - Örneğin, girişin bir dizi biçiminde olduğunu varsayabilirsiniz.
[1,2,3]
veya[1 2 3]
Güncelleme 2 - İkili ağaç aslında bir ikili arama ağacı olmalıdır. Başlangıçta bundan bahsetmediğim için, kullanıcıların normal bir diziyi ikili bir arama ağacı dizisine ayrı bir program olarak dönüştürmesine izin vereceğim ve son bayt sayısı sadece programın diziyi argüman olarak alması ve yazdırması için olacak ikili ağaç gibi.
30000,1000,499999