Python 2, 117 111 105 100 bytes
s="ABCDEFGHIJKLMNOPQRSTUVWXYZ"*2
for i in range(51):print(s[:-i-1]+s[-i-3::-1],s[:i]+s[i::-1])[26>i]
Thanks to @LeakyNun and @manatwork for pointing out a few byte saves.
Non-Golfed:
import string
def print_alphatriangle(n):
offset = 1
tail_offset = 3
alpha = string.ascii_uppercase * n
for i in range(len(alpha) - offset):
if len(alpha) / 2 > i:
print alpha[:i] + alpha[i::-offset]
continue
print alpha[:-i-offset] + alpha[-i-tail_offset::-offset]
This method works simply by string splicing an alphabet string that is concatenated together. Depending on whether i
has reached a mid-way point of the string, it then starts to print out decreasing strings.