二叉搜索树BST图节点平衡因子计算,binarytree,Python

Posted zhangphil

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉搜索树BST图节点平衡因子计算,binarytree,Python相关的知识,希望对你有一定的参考价值。

注意当节点非空,且在右子树高度减去左子树高度前,先给非空节点高度加1。对于本身高度为0的节点,意味着没有左右子树,直接返回平衡因子0。程序中直接使用了binarytree为每个节点的高度值属性height。

from binarytree import bst


def app():
    t = bst(height=4, is_perfect=False)
    print(t)

    print('-----')

    factors = []
    for n in t.levelorder:
        if n is None:
            continue
        else:
            factors.append((n, get_blance_factor(n)))
    print(factors)


# 平衡因子的计算,对于一个节点,该节点右子树高度减去左子树高度。
# 有些时候,也可以是左子树高度减去右子树高度。只要在代码系统中约定一致即可。
def get_blance_factor(node):
    factor = 0

    if node.height == 0:
        factor = 0
        return factor

    left = node.left
    right = node.right

    lh = 0
    rh = 0
    if left is not None:
        lh = node.left.height + 1

    if right is not None:
        rh = node.right.height + 1

    factor = rh - lh

    return factor


if __name__ == '__main__':
    app()

输出:


          __11____________
         /                \\
      __7        __________26
     /   \\      /            \\
    3     9    12___          27___
   / \\              \\              \\
  2   6             _23            _30
 /                 /   \\          /
0                 20    25       29

-----
[(Node(11), 0), (Node(7), -2), (Node(26), 0), (Node(3), -1), (Node(9), 0), (Node(12), 2), (Node(27), 2), (Node(2), -1), (Node(6), 0), (Node(23), 0), (Node(30), -1), (Node(0), 0), (Node(20), 0), (Node(25), 0), (Node(29), 0)]

以上是关于二叉搜索树BST图节点平衡因子计算,binarytree,Python的主要内容,如果未能解决你的问题,请参考以下文章

BST二叉搜索树插入一个节点后检测距离当前节点最近的失衡点,binarytree,Python

平衡二叉树的构建

BST二叉搜索树插入节点建树并找出不平衡节点,networkx,Python

BST二叉搜索树插入节点建树并找出不平衡节点,networkx,Python

数据结构树之平衡二叉树

BST(二叉搜索树),AVL(平衡二叉树)RBT(红黑树)的区别