樹(shù)的知識(shí)點(diǎn)總結(jié)
樹(shù)的分類:
??????? 一般樹(shù):任意一個(gè)節(jié)點(diǎn)的個(gè)數(shù)都不受限制;
??????? 二叉樹(shù):任意一個(gè)子結(jié)點(diǎn)的個(gè)數(shù)和葉子節(jié)點(diǎn)的個(gè)數(shù)最多兩個(gè),且節(jié)點(diǎn)和子節(jié)點(diǎn)位置不可更改;
???
??????? 森林:n個(gè)互不相交的樹(shù)的集合;
二叉樹(shù)分類:
?????? 一般二叉樹(shù):
?????? 滿二叉樹(shù):在不增加層數(shù)的前提下,無(wú)法再增加一個(gè)節(jié)點(diǎn)的前提的二叉樹(shù);
?????? 完全二叉樹(shù):如果只刪除了滿二叉樹(shù)最底層右邊連續(xù)若干個(gè)節(jié)點(diǎn),這樣形成的二叉樹(shù)就是完全二叉樹(shù);
????
一般樹(shù)的儲(chǔ)存:
?????? 雙親表示法:
????? 孩子表示法:
????? 雙親孩子表示法:
????? 二叉樹(shù)表示法:
???????????????一般樹(shù)的都可以轉(zhuǎn)換成二叉樹(shù)再進(jìn)行儲(chǔ)存,轉(zhuǎn)換方法:選擇原來(lái)樹(shù)的根節(jié)點(diǎn)作為二叉樹(shù)的根節(jié)點(diǎn),轉(zhuǎn)換的二叉樹(shù)中任意一個(gè)節(jié)點(diǎn)的左指針域指向它的從左至右的第一個(gè)孩子,右指針域指向它的兄弟;
二叉樹(shù)儲(chǔ)存
??????連續(xù)存儲(chǔ)(數(shù)組):
????????????????一般二叉樹(shù)要用連續(xù)存儲(chǔ)的方式進(jìn)行儲(chǔ)存,必須將一般二叉樹(shù)轉(zhuǎn)化為完全二叉樹(shù),原因:一般二叉樹(shù)是非線性的,而電腦的的內(nèi)存是線性的,所以要將非線性轉(zhuǎn)換位線性在電腦中進(jìn)行儲(chǔ)存。如果只再數(shù)組中儲(chǔ)存有效結(jié)點(diǎn),那么無(wú)法將線性轉(zhuǎn)換為非線性(就無(wú)法知道二叉樹(shù)的實(shí)際結(jié)構(gòu))。
????? 鏈?zhǔn)酱鎯?chǔ):
?????????????? 一個(gè)數(shù)據(jù)兩個(gè)指針域
二叉樹(shù)的遍歷
????? 先序遍歷:
???????????????先遍歷根結(jié)點(diǎn)再先序遍歷左子樹(shù),再先序遍歷右子樹(shù);
????? 中序便利:
????????????? 先中序遍歷左字?jǐn)?shù),再遍歷根結(jié)點(diǎn),再中序遍歷右子樹(shù);
????? 后序遍歷:
????????????? 先后序遍歷左子樹(shù),再后序遍歷右子樹(shù),再遍歷根幾點(diǎn);
?已知來(lái)兩種序列求原始二叉樹(shù)
?????? 已知先和中可以知道原始二叉樹(shù);
?????? 已知中和后可以知道原始 二叉樹(shù);
還有結(jié)點(diǎn),葉子結(jié)點(diǎn),樹(shù)的深度,結(jié)點(diǎn)的讀以及樹(shù)的度等概念;





