美文网首页Python全栈工程师
23.3-习题打印树和二叉树遍历

23.3-习题打印树和二叉树遍历

作者: BeautifulSoulpy | 来源:发表于2019-10-17 10:13 被阅读0次

成年人之间最好的关系,不是彼此给与,而是保持距离感;

好的关系,都有点冷淡!


练习1: 打印树

打印要求,严格对齐,不重叠,就像一颗二叉树一样;


# 思路1:计算间隔数实现
def print_tree(array, unit_width=2):
    '''
    i  前空格   元素间
    3    7     
    2    3
    1    1
    0    0
    '''
    length = len(array)
    index = 1
    depth = math.ceil(math.log2(length))  #4
    
    sep = ' '*unit_width
    for i in range(depth-1,-1,-1):
        pre = 2**i - 1
        print(sep*pre,end='')
        offset = 2 ** (depth - i - 1)
        line = array[index: index+offset]
        intervalspace = sep * (2*pre + 1)
        print(intervalspace.join(map(str,line)))
        index += offset

print_tree([0,30, 20, 80, 40, 50, 10, 60, 70, 90])
#----------------------------------------------------------------------
              30
      20              80
  40      50      10      60
70  90


import math 
def print_trees(array,unit_width=2):
    length = len(array)
    depth = math.ceil(math.log2(length+1))
    
    index = 0
    
    width = 2**depth -1   # 行宽度,最深的行15个数
    for i in range(depth):   # 0123
        for j in range(2**i):  # 计数
            # 居中打印,后面追加一个空格
            print('{:^{}}'.format(array[index],width*unit_width),end = ' '*unit_width)
            index += 1
            if index >= length:
                break
        width = width//2  # 居中打印宽度减半
        print() #控制换行;
        
print_trees([x+1 for x in range(29)])
#----------------------------------------------------------------
                              1                                 
              2                               3                 
      4               5               6               7         
  8       9       10      11      12      13      14      15    
16  17  18  19  20  21  22  23  24  25  26  27  28  29  


相关文章

  • 23.3-习题打印树和二叉树遍历

    成年人之间最好的关系,不是彼此给与,而是保持距离感; 好的关系,都有点冷淡! 练习1: 打印树 打印要求,严格对齐...

  • 3.有关二叉树的算法

    1.分层遍历二叉树:宽度优先遍历 2.分层遍历应用,按层打印二叉树 3.前序遍历二叉树 4.前序遍历,迭代 5.中...

  • 面试题32:从上到下打印二叉树

    题目1:不分行从上到下打印二叉树,层次遍历 解析:该问题就是二叉树的层次遍历。 题目2:分行从上到下打印二叉树。 ...

  • 剑指第三周

    对称的二叉树 其实就是要遍历嘛 按之字形顺序打印二叉树 同样是简单的层次遍历 把二叉树打印成多行 这个更简单了 栈...

  • 二叉树遍历

    概述 典型的遍历模式:前序遍历、中序遍历、逆序遍历 中序遍历(左根右) 可以实现二叉树的按照大小进行打印 二叉树按...

  • 从上往下打印二叉树

    题目描述: 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 分析: 二叉树的遍历:前序遍历:根->左->右...

  • 算法与数据结构

    二叉树 1. 二叉树打印练习题 有一棵二叉树,请设计一个算法,按照层次打印这棵二叉树。给定二叉树的根结点root,...

  • 二叉树前序中序后序遍历

    二叉树遍历方法 前序遍历:根左右。先打印,再遍历左子树,再遍历右子树; 中序遍历:左根右。先遍历左子树,再打印,再...

  • 二叉树左右节点交换

    二叉树中遍历方式有很多中,最简单的是前序遍历,打印自己,然后先左后右 二叉树反转,首先左树遍历到底,然后再切换左右...

  • 算法(3)层次顺序遍历二叉树

    问题:按照层次顺序遍历二叉树,每层换行打印 1、普通的按层打印二叉树只需要使用队列就可以了2、按层打印二叉树,需要...

网友评论

    本文标题:23.3-习题打印树和二叉树遍历

    本文链接:https://www.haomeiwen.com/subject/txcpmctx.html