如何直观的打印一颗二叉树

class TreeNode:
    
    def __init__(self,x):
        self.value = x
        self.right = None
        self.left = None
        

def printTree(head):
    
    print("Binary Tree:")
    printInOrder(head,0,"H",17)
    print()
    
def printInOrder(head,height,Str,length):
    
    if head == None:
        return
    
    printInOrder(head.right,height + 1,"v",length)
    
    """ 获取当前字符串长度"""
    val = Str  + head.value + Str
    
    """ 根据指定字符串长度大小,计算左右长度进行填充"""
    lenL = (length - len(val))/2
    lenR = length - len(val) - lenL
    
    """填充完成的val"""
    val  = getSpace(lenL) + val + getSpace(lenR)
    print(getSpace(height * length) + val)
    
    printInOrder(head.left,height + 1, "^",length)
    
def getSpace(num):
    
    space = " "
    buf = ""
    for i in range(num):
        buf+=space
        
    return buf

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值