Python——数据结构——树——二叉树——二叉排序树的最大深度、最小深度

使用按层遍历的方式求二叉排序树的最大深度和最小深度:

  • 最小深度:第一个没有左右结点的叶子结点的层
  • 最大深度:所有节点均没有左右子节点的层

代码如下

from treeNode import sortTree

#!/usr/bin/python
# -*- coding: UTF-8 -*-
"""
@author:cfl
@file:二叉树的最大深度、最小深度.py
@time:2022/01/05
@software:PyCharm
"""
from treeNode import sortTree

def main():
    # 二叉排序树
    sTree = sortTree()
    for i in [10, 6, 15, 9, 3, 13, 7, 16, 8]:
        sTree.add(i)

    root = sTree.root
    lst1=[root]
    lst2=[]

    minLayer=0
    maxLayer=0
    k=1

    for i in range(sTree.length):
        flga=0  # flga=0表示node无后续结点(叶子结点)
        for node in lst1:
            if node.left!=None:
                flga=1
                lst2.append(node.left)
            if node.right!=None:
                flga=1
                lst2.append(node.right)

            if minLayer==0 and flga==0: # 最小深度
                minLayer=k

        if len(lst2)==0: # 最大深度
            maxLayer=k
            break

        k+=1
        lst1.clear()
        lst1=lst2.copy()
        lst2.clear()
    print('最小深度:',minLayer)
    print('最大深度:',maxLayer)


if __name__ == '__main__':
    main()

结果展示

Python——数据结构——树——二叉树——二叉排序树的最大深度、最小深度_第1张图片

你可能感兴趣的:(#,树,python,数据结构,开发语言)