溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python 中怎么將列表轉(zhuǎn)化為二叉樹

發(fā)布時(shí)間:2021-07-02 15:31:35 來源:億速云 閱讀:631 作者:Leah 欄目:大數(shù)據(jù)

Python 中怎么將列表轉(zhuǎn)化為二叉樹,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

 

Day46: 列表轉(zhuǎn)化為二叉樹

已知列表nums,將其轉(zhuǎn)化為二叉樹。舉例:

nums = [3,9,20,None,None,15,7],轉(zhuǎn)化為二叉樹后:

節(jié)點(diǎn)3的左子節(jié)點(diǎn)9,右子節(jié)點(diǎn)20,9的左右子節(jié)點(diǎn)都為None,20的左子節(jié)點(diǎn)15,右子節(jié)點(diǎn)7,參考下面:

Python 中怎么將列表轉(zhuǎn)化為二叉樹  

二叉樹定義:

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

請(qǐng)補(bǔ)全下面函數(shù):

def list_to_binarytree(nums):
    pass
   

構(gòu)建分析

構(gòu)建滿足以上結(jié)構(gòu)的二叉樹,可以觀察到:樹的父節(jié)點(diǎn)和左右子節(jié)點(diǎn)的關(guān)系:

 
   
 

基于以上公式,再使用遞歸構(gòu)建二叉樹。

遞歸基情況:

if index >= len(nums) or nums[index] is None:
    return None
 

遞歸方程:

 
   
 

根據(jù)以上得到如下代碼:

 

代碼

def list_to_binarytree(nums):
    def level(index):
        if index >= len(nums) or nums[index] is None:
            return None
        
        root = TreeNode(nums[index])
        root.left = level(2 * index + 1)
        root.right = level(2 * index + 2)
        return root

    return level(0)

binary_tree = list_to_binarytree([3,9,20,None,None,15,7])

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI