亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

Python TreeNode如何實現樹的堆排序

小樊
81
2024-08-17 16:25:40
欄目: 編程語言

實現樹的堆排序可以使用Python中的TreeNode類來表示樹節點,同時使用堆排序算法來對樹進行排序。以下是一個示例代碼:

class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

def heapify(root, size, i):
    largest = i
    l = 2 * i + 1
    r = 2 * i + 2
    
    if l < size and root[l].val > root[largest].val:
        largest = l
    
    if r < size and root[r].val > root[largest].val:
        largest = r
    
    if largest != i:
        root[i], root[largest] = root[largest], root[i]
        heapify(root, size, largest)

def heap_sort(root):
    size = len(root)
    
    for i in range(size//2 - 1, -1, -1):
        heapify(root, size, i)
    
    for i in range(size-1, 0, -1):
        root[i], root[0] = root[0], root[i]
        heapify(root, i, 0)
    
    return root

# 示例
root = [TreeNode(4), TreeNode(10), TreeNode(7), TreeNode(5), TreeNode(1)]

sorted_root = heap_sort(root)

for node in sorted_root:
    print(node.val)

在上面的代碼中,我們首先定義了TreeNode類來表示樹節點,然后實現了heapify函數來維護堆的性質,以及heap_sort函數來對樹進行堆排序。最后我們通過示例代碼對一個樹節點列表進行堆排序,并輸出排序后的結果。

0
内黄县| 葫芦岛市| 陆河县| 崇文区| 屏山县| 开封市| 宁河县| 封开县| 崇明县| 虎林市| 深圳市| 定边县| 静安区| 淮滨县| 刚察县| 娱乐| 二连浩特市| 临湘市| 保德县| 安庆市| 修武县| 凯里市| 桂平市| 长岛县| 郎溪县| 玉田县| 伊宁县| 施秉县| 横峰县| 苏尼特右旗| 焉耆| 峨边| 平果县| 汪清县| 汉寿县| 大港区| 湘潭县| 博湖县| 太湖县| 三门峡市| 镇原县|