當前位置:首頁 » 編程語言 » python便利

python便利

發布時間: 2023-09-16 04:02:25

python 二叉樹的創建和遍歷、重建

幾個有限元素的集合,該集合為空或者由一個根(Root)的元素及兩不相交的(左子樹和右子樹)的二叉樹組成,是有序樹,當集合為空時,稱為空二叉樹,在二叉樹中,一個元素也稱為一個結點。

前序遍歷:若二叉樹為空,則空操作返回,否則先訪問根結點,然後前序遍歷左子樹,再前序遍歷右子樹

中序遍歷:若樹為空,則空操作返回,否則從根結點開始(不是先訪問根結點),中序遍歷根結點的左子樹,然後訪問根節點,最後中序遍歷右子樹。

後序遍歷:若樹為空,則空操作返回,否則從左到右先訪問葉子結點後結點的方式遍歷左右子樹,最後訪問根節點。

層序遍歷:若樹為空,則空操作返回,否則從樹的每一層,即從根節點開始訪問,從上到下逐層遍歷,在同一層中,按從左到右的順序對結點逐個訪問。

假設已知後序遍歷和中序遍歷結果,從後序遍歷的結果可以等到最後一個訪問的結點是根節點,對於最簡單的二叉樹,此時在中序遍歷中找到根節點之後,可以分辨出左右子樹,這樣就可以重建出這個最簡單的二叉樹了。而對於更為復雜的二叉樹,重建得到根結點和暫時混亂的左右結點,通過遞歸將左右結點依次重建為子二叉樹,即可完成整個二叉樹的重建。(在得到根結點之後,需要在中序遍歷序列中尋找根結點的位置,並將中序序列拆分為左右部分,所以要求序列中不能有相同的數字,這是序列重建為二叉樹的前提。)

Root =None

strs="abc##d##e##"   #前序遍歷擴展的二叉樹序列

vals =list(strs)

Roots=Create_Tree(Root,vals)#Roots就是我們要的二叉樹的根節點。

print(Roots)

inorderSearch = inOrderTraverse2(Roots)

print(inorderSearch)

② python3字典遍歷

(1)遍歷key值

在使用上,for key in a和 for key in a.keys():完全等價。

(2)遍歷value值

(3)遍歷字典項

(4)遍歷字典健值

在使用上for key,value in a.items()與for (key,value) in a.items()完全等價

③ Python字典鍵值對的添加和遍歷

添加鍵值對
首先定義一個空字典
>>> dic={}
直接對字典中不存在的key進行賦值來添加
>>> dic['name']='zhangsan'
>>> dic
{'name': 'zhangsan'}
如果key或value都是變數也可以用這種方法
>>> key='age'
>>> value=30
>>> dic[key]=value
>>> dic
{'age': 30. 'name': 'zhangsan'}
這里可以看到字典中的數據並不是按先後順序排列的,如果有興趣,可以搜一搜數據結構中的——哈希表
從python3.7開始,字典按照插入順序,實現了有序。修改一個已存在的key的值,不影響順序,如果刪了一個key後再添加該key,該key會被添加至末尾。標准json庫的mp(s)/load(s)也是有序的
還可以用字典的setdefault方法
>>> dic.setdefault('sex','male')
'male'
>>> key='id'
>>> value='001'
>>> dic.setdefault(key,value)
'001'
>>> dic
{'id': '001', 'age': 30. 'name': 'zhangsan', 'sex': 'male'}

④ Python中如何遍歷指定目錄下的所有文件

例如:在C:\TDDOWNLOAD目錄下有a.txt、b.txt兩個文件,另有\sub1子文件夾,C:\TDDOWNLOAD\sub1下又有c.txt、d.txt兩個文件。
1.
os.walk
os.walk()返回一個三元素的tuple:當前路徑、子文件夾名稱、文件列表。>>>
import
os>>>
def
fun(
path
):...
for
root,
dirs,
files
in
os.walk(
path
):...
for
fn
in
files:...
print
root,
fn...
>>>
fun(
r'C:\TDDOWNLOAD'
)C:\TDDOWNLOAD
a.txtC:\TDDOWNLOAD
b.txtC:\TDDOWNLOAD\sub1
c.txtC:\TDDOWNLOAD\sub1
d.txt>>>
2.
glob.glob
glob.glob()只接受一個參數,這個參數既代有路徑,又代有匹配模式,返回值為一個列表。注意,glob.glob()無法直接穿透子文件夾,需要自己處理:>>>
def
fun(
path
):...
for
fn
in
glob.glob(
path
+
os.sep
+
'*'
):
#
'*'代表匹配所有文件...
if
os.path.isdir(
fn
):
#
如果結果為文件夾...
fun(
fn
)
#
遞歸...
else:...
print
fn...
>>>
fun(
r'C:\TDDOWNLOAD'
)C:\TDDOWNLOAD\a.txtC:\TDDOWNLOAD\b.txtC:\TDDOWNLOAD\sub1\c.txtC:\TDDOWNLOAD\sub1\d.txt>>>
'*'為匹配模式,代表匹配所有文件,只有這樣才能將子文件夾查出來,以便遞歸深入,探查下一層的文件。

熱點內容
tomcat配置ip地址訪問 發布:2025-03-10 14:54:54 瀏覽:689
注冊淘寶密碼多少 發布:2025-03-10 14:49:03 瀏覽:558
文件上傳設備 發布:2025-03-10 14:47:47 瀏覽:498
江西l2tp伺服器託管雲伺服器 發布:2025-03-10 14:47:38 瀏覽:885
微信如何給錢包設置手勢密碼 發布:2025-03-10 14:46:55 瀏覽:229
江蘇伺服器如何 發布:2025-03-10 14:46:17 瀏覽:179
可編程交直流電源 發布:2025-03-10 14:40:19 瀏覽:569
c語言編程軟體安裝教程 發布:2025-03-10 14:20:01 瀏覽:85
java判斷變數類型 發布:2025-03-10 14:19:50 瀏覽:578
讀寫存儲器解釋 發布:2025-03-10 14:04:22 瀏覽:93