Python中的樹與二叉樹是怎樣的,針對這個(gè)問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比濱城網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式濱城網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋濱城地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴。
樹是一類重要的非線性數(shù)據(jù)結(jié)構(gòu),是以分支關(guān)系定義的層次結(jié)構(gòu)
定義:
樹(tree)是n(n>0)個(gè)結(jié)點(diǎn)的有限集T,其中: 有且僅有一個(gè)特定的結(jié)點(diǎn),稱為樹的根(root)
當(dāng)n>1時(shí),其余結(jié)點(diǎn)可分為m(m>0)個(gè)互不相交的有限集T1,T2,……Tm,其中每一個(gè)集合本身又是一棵樹,稱為根的子樹(subtree)
特點(diǎn): 樹中至少有一個(gè)結(jié)點(diǎn)——根 樹中各子樹是互不相交的集合
基本術(shù)語
結(jié)點(diǎn)(node)——表示樹中的元素,包括數(shù)據(jù)項(xiàng)及若干指向其子樹的分支
結(jié)點(diǎn)的度(degree)——結(jié)點(diǎn)擁有的子樹數(shù) 葉子(leaf)——度為0的結(jié)點(diǎn)
孩子(child)——結(jié)點(diǎn)子樹的根稱為該結(jié)點(diǎn)的孩子
雙親(parents)——孩子結(jié)點(diǎn)的上層結(jié)點(diǎn)叫該結(jié)點(diǎn)的~
兄弟(sibling)——同一雙親的孩子
樹的度——一棵樹中最大的結(jié)點(diǎn)度數(shù)
結(jié)點(diǎn)的層次(level)——從根結(jié)點(diǎn)算起,根為第一層,它的孩子為第二層……
深度(depth)——樹中結(jié)點(diǎn)的最大層次數(shù)
森林(forest)——m(m?0)棵互不相交的樹的集合
二叉樹二叉樹是有限個(gè)元素的集合,該集合或者為空、或者有一個(gè)稱為根節(jié)點(diǎn)(root)的元素及兩個(gè)互不相交的、分別被稱為左子樹和右子樹的二叉樹組成。
二叉樹的每個(gè)結(jié)點(diǎn)至多只有二棵子樹(不存在度大于2的結(jié)點(diǎn)),二叉樹的子樹有左右之分,次序不能顛倒。
二叉樹的第i層至多有2^{i-1}個(gè)結(jié)點(diǎn)
深度為k的二叉樹至多有2^k-1個(gè)結(jié)點(diǎn);
對任何一棵二叉樹T,如果其終端結(jié)點(diǎn)數(shù)為N0,度為2的結(jié)點(diǎn)數(shù)為N2,則N0=N2+1
遍歷二叉樹
前序遍歷
若樹為空,則空操作返回。否則,先訪問根節(jié)點(diǎn),然后前序遍歷左子樹,再前序遍歷右子樹。(W)型 (中 左 右)
中序遍歷
若樹為空,則空操作返回。否則,從根節(jié)點(diǎn)開始(注意并不是先訪問根節(jié)點(diǎn)),中序遍歷根節(jié)點(diǎn)的左子樹,然后是訪問根節(jié)點(diǎn),最后中序遍歷根節(jié)點(diǎn)的右子樹。(M)型,(左 中 右)
后續(xù)遍歷
若樹為空,則空操作返回。否則,從左到右先葉子后節(jié)點(diǎn)的方式遍歷訪問左右子樹,最后訪問根節(jié)點(diǎn)。(左右中)逆時(shí)針型 (左 右 中)
層序遍歷
若樹為空,則空操作返回。否則,從樹的第一層,也就是根節(jié)點(diǎn)開始訪問,從上到下逐層遍歷,在同一層中,按從左到右的順序結(jié)點(diǎn)逐個(gè)訪問。
關(guān)于Python中的樹與二叉樹是怎樣的問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。