91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

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
汝阳县| 锦州市| 迭部县| 临漳县| 漠河县| 平乡县| 湘乡市| 灵台县| 平阴县| 区。| 卢湾区| 米易县| 称多县| 临湘市| 道孚县| 太原市| 奈曼旗| 盘锦市| 哈尔滨市| 泰宁县| 五常市| 余姚市| 房产| 江华| 洛隆县| 八宿县| 樟树市| 锦州市| 龙门县| 迁西县| 龙里县| 荆州市| 海晏县| 靖江市| 瑞丽市| 章丘市| 格尔木市| 平潭县| 全州县| 宽甸| 博湖县|