java实现
public StringBuilder toString(StringBuilder prefix, boolean isTail, StringBuilder sb) {
if(right!=null) {
right.toString(new StringBuilder().append(prefix).append(isTail ? "│ " : " "), false, sb);
}
sb.append(prefix).append(isTail ? "└── " : "┌── ").append(value.toString()).append("\n");
if(left!=null) {
left.toString(new StringBuilder().append(prefix).append(isTail ? " " : "│ "), true, sb);
}
return sb;
}
/@Override
/public String toString() {
return this.toString(new StringBuilder(), true, new StringBuilder()).toString();
/}
效果:
def display(self):
"""
xxl:从任何起点 开始漂亮的打印树状结构
:return: none
"""
lines, *_ = self._display_aux()
for line in lines:
print(line)
# 每个节点必须有 key 这个字段
def _display_aux(self):
"""Returns list of strings, width, height, and horizontal coordinate of the root."""
# No child.
if self.right is None and self.left is None:
line = '%s' % self.key
width = len(line)
height