ticoAg/ChineseCorpus-Kaggle-fanti huggingface dataset:
256年，司馬昭偕同曹魏皇帝曹髦一起平定鎮東大將軍諸葛誕的反叛。司馬昭則率軍征伐諸葛誕。東吳派文欽與全懌、全端、唐諮和王祚等領兵救援，趁王基包圍圈未完成而領兵進入壽春城。司馬昭指揮魏軍主力包圍了壽春的近十八萬吳軍和叛軍，一面設計讓他們誤以為救兵將至，不再節約糧食，一面招降瓦解敵軍，諸葛誕的部下大量歸降，突圍攻擊魏軍防禦工事未成，內部矛盾激化，諸葛誕殺文欽，文欽的兒子文鴦、文虎向司馬昭投降，繼而繞城勸降，城中將士見文欽之子都被赦免，皆有降意，司馬昭見城上守軍都持弓而不放箭，就下令說可以攻城了，魏軍攻入壽春，胡奮臨陣斬諸葛誕，戰役結束。這次戰役吳軍直接投入戰鬥的士兵高達十幾萬，和諸葛誕的十八萬軍隊相加超過三十萬，超過了司馬昭指揮的二十六萬人，而魏國還要在西部抵禦蜀國的進攻，最終司馬昭以少勝多，贏得戰爭。司馬昭因功被晉陞為相國，但拒受。
魏甘露五年（260年）四月魏帝曹髦見王沈、王經、王業等人，憤慨說道：「司馬昭之心，路人皆知也！朕不能坐受廢辱，今日當與卿等自出討之。」並且率領宮人300餘人討伐。有近臣先行向司馬昭通風報信，司馬昭馬上派兵入宮鎮壓，雙方在宮內東止車門相遇，中護軍賈充在南闕下率軍迎戰曹髦，賈充命令成濟殺曹髦，成濟於是用戈刺殺曹髦。後來司馬昭以罪誅殺成濟一族。司馬昭立曹奐為魏元帝。
263年夏，掌握曹魏實權的司馬昭決定對蜀漢發動最後的戰役，也借此挽回弒君造成的不利影響，并處死反對伐蜀的將軍鄧敦，派遣鍾會、鄧艾、諸葛緒等分東、中、西三路進攻漢中。蜀漢則以姜維為首組成抵抗軍，據劍閣天險與鍾會的軍隊相持，鍾會不能前進。鄧艾遂率精兵偷渡陰平攻佔涪城，并在綿竹擊殺諸葛瞻，進逼成都。蜀漢後主劉禪出降，姜維聞訊後帶部眾向鍾會投降，蜀漢滅亡，開始三國統一的序幕。
魏元帝於264年5月2日（景元五年三月三十日）再次下詔拜司馬昭為相國，並晉陞為晉王，加九錫且位在諸侯王上，奏事不稱臣，受詔不拜，以天子車服郊祀天地。
郭太后已于此前不久去世，司馬氏代魏之勢已成。
265年司馬昭死後葬在崇陽陵，數月後司馬昭被謚為文王。他的兒子司馬炎代魏稱帝，國號晉，史稱西晉。西晉建立後他被追尊為文帝，廟號太祖。
*晉明帝：「若如公言，祚安得長！」
*曹髦：「司馬昭之心，路人皆知也。」 （起源自《三國志·魏書四·三少帝紀》，後來成為知名俚語。）
*王經：「朝廷四方皆為之效死。」（《三國志·魏書四·三少帝紀》）
*毌丘儉：「弟昭，忠肅寬明，樂善好士，有高世君子之度，忠誠為國，不與師同。」
*張悌：「摧堅敵如折枯，蕩異同如反掌，任賢使能，各盡其心，非智勇兼人，孰能如之？」（《三國志·卷四十八·吳書三·三嗣主傳第三》）
*羊祜：「先帝（司馬昭）順天應時，西平巴、蜀，南和吳會，海內得以休息，兆庶有樂安之心。而吳複背信，使邊事更興。夫期運雖天所授，而功業必由人而成，不一大舉掃滅，則役無時得安。亦所以隆先帝之勳，成無為之化也。」
*習鑿齒：「自是天下畏威懷德矣。君子謂司馬大將軍於是役也，可謂能以德攻矣。夫建業者異矣，各有所尚，而不能兼併也。故窮武之雄斃於不仁，存義之國喪於懦退，今一征而禽三叛，大虜吳眾，席捲淮浦，俘馘十萬，可謂壯矣。而未及安坐，種惠吳人，結異類之情，寵鴦葬欽，忘疇昔之隙，不咎誕眾，使揚土懷愧，功高而人樂其成，業廣而敵懷其德，武昭既敷，文算又洽，推是道也，天下其孰能當之哉！」
*虞世南：「克寧禍亂，南定淮海，西平庸蜀，役不逾時，厥功為重。及高貴纂位，聰明夙智，朝野欣欣，方之文武，不能竭忠葉贊，擬跡伊周，遂乃偽殺彥士，委罪成濟，自貽逆節，終享惡名。斯言之玷，不可為也。」（《唐文拾遺》卷十三）
*房玄齡：「世宗以睿略創基，太祖以雄才成務。事殷之跡空存，翦商之志彌遠，三分天下，功業在焉。及逾劍銷氛，浮淮靜亂，桐宮胥怨，或所不堪。若乃體以名臣，格之端揆，周公流連於此歲，魏武得意於茲日。軒懸之樂，大啟南陽，師摯之圖，於焉北面。壯矣哉，包舉天人者也！為帝之主，不亦難乎。」「世宗繼文，邦權未分。三千之士，其從如云。世祖無外，靈關靜氛。反雖討賊，終為弒君。」（《晉書》）
*王應麟：「司馬師引二敗以為己過，司馬昭怒王儀責在元帥之言。昭之惡，甚于師。」（《卷十三考史》）
*王夫之：「司馬昭、郭威雖逆，而固非朱溫之暴，可以理奪者也。」（《讀通鑒論·卷十·三國》）「使司馬昭殺賈充以謝天下，天下其可謝，而天其弗亟絕之邪？己謀逆而人成之，事成而惡其人，心之不昧者也。」（《讀通鑒論·卷十七·梁武帝》）
*趙翼：「司馬氏當魏室未衰，乘機竊權，廢一帝、弒一帝而奪其位，比之于操，其功罪不可同日語矣！」（《廿二史札記：魏晉禪代不同》）
*羅貫中：「假意投身強哭尸，公然弒主待推誰？欲誅成濟瞞天下，天下人人已盡知！」「司馬當年命賈充，弒君南闕赭袍紅。卻將成濟夷三族，欲使軍民耳盡聾！」
*李琰（她與王宣等五人，以司馬昭遺孀、妾室身份在泰始三年（267年）受到冊封，拜為修華）
*晉景帝司馬師，張春華所生。司馬炎建晉後追尊為晉景帝
*汝南文成王司馬亮，伏夫人所生。西晉八王之亂中八王之一
*瑯邪武王司馬伷，伏夫人所生。晉元帝祖父。
*趙王司馬倫，柏夫人所生。西晉八王之亂中八王之一。曾一度稱帝
#晉武帝司馬炎，王元姬所生
#齊王司馬攸，王元姬所生，因景帝司馬師無子過繼給司馬師
#城陽哀王司馬兆，十歲夭折
#遼東悼惠王司馬定國，三歲夭折
#廣漢殤王司馬廣德，二歲夭折
#樂安平王司馬鑒
#燕王司馬機，過繼給司馬京，無子
#樂平王司馬永祚，早夭
#司馬延祚，早夭，追封樂平王
#京兆公主，母王元姬（《晉書·后妃傳》），嫁郭德（又名甄德），生郭喜（又名甄喜）
李赤尤（青年）
高蘭村（中年）
* 真三國無雙系列（光榮公司開發，岸尾大輔配音）
元曲演出壁畫
元曲，或稱元雜劇，是盛行于元代的戲曲藝術，為散曲和雜劇的合稱。相對於明朝的傳奇（南曲），後世又將元曲稱為北曲。元曲與宋詞及唐詩、漢賦並稱。
廣義的曲泛指秦漢以來各種可入樂的樂曲，如漢大曲、唐宋大曲、民間小曲等。狹義的曲則多指宋朝以來的南曲和北曲。曲分為戲曲（或稱劇曲，包括雜劇、傳奇等）與散曲兩類，元、明以來甚為流行，故後世有元曲之稱。而曲同詞的體式相近，但一般在字數定格外可加襯字，較為自由，并多使用口語。音樂部分亦有宮調之分，元曲中最常用的有五宮四調。
相對於艷麗的詞，曲較俚俗而有「惡少」之名，學者鄭騫評：「詞與曲是孿生兄弟，詞是翩翩佳公子，曲則帶有惡少的氣息。」
雜劇的戲劇形式是由故事情節、曲詞、賓白、科介等幾部分組成。科介是演出提示，規定表演動作和舞臺效果，賓白就是說白，曲詞是歌唱部分。
元雜劇劇本一般由四折組成，一套樂曲伴唱一折；所以“折”是音樂的單元，也是劇情的大段落。在四折之外，還可以有楔子。楔子常常在劇本開頭，相當於序幕，但也可以作爲過場戲放在折與折之間。劇本的結尾一般有兩句或四句對子，叫“題目正名”，來總結內容。題目正名最後一句常用作劇本名稱，比如《元曲選》本《竇娥冤》：
:題目：秉鑒持衡廉訪法
:正名：感天動地竇娥冤
但也有沒有題目正名的雜劇，例如關漢卿的《閨怨佳人拜月亭》。
散曲是可配樂演唱的歌曲形式。根據《青樓集》的記載，元散曲的歌唱有多種形式，像表演唱、舞蹈伴唱、樂器伴唱等。在宴會上，演員解語花“左手持荷花，右手舉杯，歌驟雨打新荷曲”；連枝秀“有招飲者，酒酣則自起舞，唱《青天歌》，女童亦舞而和之，真仙音也”。元散曲主要有小令和套數（又叫散套、套曲）兩種形式。小令原是民間的小調，文人的小令多半較典雅，民間的小令語言俚俗。小令以描寫為主，比起唐宋詩詞通俗生動，確具有一番獨特風格與精神。
南宋末期，社會動盪不安，元軍大舉進攻南宋，給予元曲的創作以深刻的影響。元雜劇源自宋雜劇、金院本。劇作家痛經變亂，對社會人生頗多感悟，寫出了深刻思考人生處境與命運的劇本，通過“情”來透視社會。而散曲創作則內容廣泛，當中以嘆世歸隱的主題最為突出。
後來列出了元人四大劇，包括《竇娥冤》、《漢宮秋》、《梧桐雨》、《趙氏孤兒》。
元代中業，雜劇創作題材都集中在愛情、神仙道化、文人事跡，顯示劇作家的獨特追求。在表現愛情時，他們更注重“情”本身，因為渴望尋找一個避世的地方。他們在文人事跡劇中歌詠自己不遇的苦悶，懷鄉的愁緒。
元朝晚期，雖然元雜劇在舞臺上仍佔有重要位置，主題以對中國傳統道德的宣揚、離奇情節為主，但是作品數量大減、內容風格因循，成了衰落主因。雜劇創作中心南移，重要劇作家多活動於江浙行省（今浙江省）和河南江北行省（今江蘇省長江以南的地區），卻加強了與南戲交流的機會，提供了戲曲進一步發展的契機，尤其是南戲、崑劇及粵劇。
王瀣，字伯沆，號冬飲、無想居士，祖籍江蘇溧水。國學大師，愛國耆儒。博通經學、理學、禪學、詩、文、書、畫、篆刻。
1871年生於南京。幼聰穎，曾學於端木埰、高子安。
后入鍾山書院，師從文廷式、陳三立、俞明震等人，以才氣見長，博學洽聞。
肄業后，先任南京江南陸師學堂教習，後在上海書局編書。
1908年，受李瑞清之邀，和柳詒-{徵}-等人為兩江師範學堂文科教習。
1911年，辛亥革命爆發後，兩江師範陷於停頓，遂在南京江南圖書館任事，後往蘇州以不惑之年學于黃葆年。
1915年，兩江師範學堂改爲南京高等師範學校，受江謙之邀教授國文，並兼首任國文系主任。南京高師1921年改爲東南大學，1928年改爲中央大學（后又于1949年改名南京大學），仍任教授。
1937年，抗戰爆發，因患中風，不能隨中大遷川，留寧。
1944年9月25日，因病與世長辭。
民國時期，王伯沆以講授儒家經典于南京大學而聞名，人稱“王四書”，與柳詒-{徵}-並稱“南雍雙柱”。他講四書五經，說理透闢，生動細緻，旁徵博引，妙語如珠，聽課者往往除文科學生外，理科專業科學生旁聽者甚眾，常常是“室外窗前，皆聽講者也。”
王伯沆是紅學家。他曾用朱、黃、綠、墨、紫五色筆，六次批點《紅樓夢》。“辛亥革命以後，對《紅樓夢》繼續進行評點，用功最深、成就最大要算王伯沆先生了。”
王伯沆是民國年間江南著名詩人。吳梅在《讀王伯沆園居詩》中評論道：“我讀伯沆詩，盎然古春意。力能驅萬牛，塵不驚六轡。探取風雅源，騷魂可檄至...。”
王伯沆的書法自成一格，行書能融入篆隸古樸厚重筆意，兼具北碑雄勁峭拔氣象。篆書挺勁蒼潤，典雅堂皇。與王東培並稱“二王”。
王伯沆執教有年，愛護學生視若已出。弟子俊才甚眾。文史學家高明、教育家張其昀、江南才子盧冀野、國學家潘重規、畫家陳衡恪、史學大師陳寅恪、詞學大師唐圭璋等人都是他的弟子。
抗戰時期，由於中風，行動不便，留在淪陷區，感念國運，每飯罷，即對客言南明時事，聲淚俱下。其時，家庭經濟拮據，每日“兩粥猶不可得”。當局爲了利用他的名望，百般拉攏。汪精衛政府立法院長陳公博也派人送來參事聘書，許以月薪大洋三百，王瀣聲色俱厲地怒斥來人，說道：“余已行將就木之人，可以舍我矣。實不敢見張邦昌、劉豫喪權辱國之舉。”當局利誘不成之後，竟以死威逼。凡此種種，王瀣皆大義凜然，以後閉門不出。國難的傷感，生活的折磨，加之1944年秋染上瘧疾，終於一病不起，臨終前囑咐妻女：“我生不願見日寇，死了，棺材也不願見到這些人。死後不要發喪，棺材不要出門，就把我埋在家中后院。”並囑家人勿接受賣國當局接濟。病逝后，家人遵其遺囑，將其遺體埋在自家後院。抗戰勝利後，1946年國立中央大學複員南京，為他舉行了隆重的追悼會，國民政府也敬送了由蔣介石題書“守道耆儒”的“榮典之璽”金字匾額。
王伯沆承太谷學派，守“述而不作”，不願以文章著述行世，生前幾乎沒有著作，學術觀點散見于所批點書籍之中。曾作有《讀四書私記》、《經略臺灣事纂》、《王氏族譜》、《前清四家詞選》、《後四家詞選》、《離騷九歌輯評》、《雙煙室詩詞文集》等，生前卻不願出版。
*《王伯沆紅樓夢批語彙錄》（趙國璋、談鳳梁）
*王伯沆周法高紀念館（南京中華門東側邊營98號）
* 只留清氣滿乾坤——王伯沆先生及其學術成就
* 王瀣先生與紅樓夢王瀣先生與紅樓夢
紅黑樹是一種自平衡二叉查找樹，是在計算機科學中用到的一種數據結構，典型用途是實現關聯數組。它在1972年由魯道夫·貝爾發明，被稱為"對稱二叉B樹"，它現代的名字源于Leo J. Guibas和羅伯特·塞奇威克于1978年寫的一篇論文。紅黑樹的結構復雜，但它的操作有著良好的最壞情況運行時間，并且在實踐中高效：它可以在時間內完成查找、插入和刪除，這里的是樹中元素的數目。
1972年，魯道夫·拜爾發明了一種資料結構，那是一個B樹的四階特殊情況。這些樹維持了所有的路徑從根到樹葉都具有相同數量的節點，創造了一個完美的平衡樹。然而，他們並不是二元搜尋樹。拜爾在他的論文中稱呼他們為「對稱二元B樹」（symmetric binary B-tree），後來他們以2-3-4 樹或是 2-4 樹的形式開始流行。
在一篇1972年的論文 "A Dichromatic Framework for Balanced Trees" 中，Leonidas J. Guibas 和 Robert Sedgewick從對稱二元B樹（symmetric binary B-tree）中推導出了紅黑樹。之所以選擇「紅色」是因為這是作者在帕羅奧多研究中心公司（Xerox PARC）工作時用彩色雷射列印機可以產生的最好看的顏色。另一種說法來自Guibas，是因為紅色和黑色的筆是他們當時可用來繪製樹的顏色。
紅黑樹和AVL樹一樣都對插入時間、刪除時間和查找時間提供了最好可能的最壞情況擔保。這不只是使它們在時間敏感的應用，如實時應用（real time application）中有價值，而且使它們有在提供最壞情況擔保的其他數據結構中作為基礎模板的價值；例如，在計算幾何中使用的很多數據結構都可以基于紅黑樹實現。
紅黑樹在函數式編程中也特別有用，在這里它們是最常用的持久數據結構（persistent data structure）之一，它們用來構造關聯數組和集合，每次插入、刪除之后它們能保持為以前的版本。除了的時間之外，紅黑樹的持久版本對每次插入或刪除需要的空間。
紅黑樹是2-3-4樹的一種等同。換句話說，對于每個2-3-4樹，都存在至少一個數據元素是同樣次序的紅黑樹。在2-3-4樹上的插入和刪除操作也等同于在紅黑樹中顏色翻轉和旋轉。這使得2-3-4樹成為理解紅黑樹背后的邏輯的重要工具，這也是很多介紹算法的教科書在紅黑樹之前介紹2-3-4樹的原因，盡管2-3-4樹在實踐中不經常使用。
紅黑樹相對于AVL樹來說，犧牲了部分平衡性以換取插入/刪除操作時少量的旋轉操作，整體來說性能要優于AVL樹。
紅黑樹是每個節點都帶有''顏色''屬性的二叉查找樹，顏色為''紅色''或''黑色''。在二叉查找樹強制一般要求以外，對于任何有效的紅黑樹我們增加了如下的額外要求：
# 節點是紅色或黑色。
# 根是黑色。
# 所有葉子都是黑色（葉子是NIL節點）。
# 每個紅色節點必須有兩個黑色的子節點。（從每個葉子到根的所有路徑上不能有兩個連續的紅色節點。）
# 從任一節點到其每個葉子的所有簡單路徑都包含相同數目的黑色節點。
下面是一個具體的紅黑樹的圖例：
An example of a red-black tree
這些約束確保了紅黑樹的關鍵特性：從根到葉子的最長的可能路徑不多于最短的可能路徑的兩倍長。結果是這個樹大致上是平衡的。因為操作比如插入、刪除和查找某個值的最壞情況時間都要求與樹的高度成比例，這個在高度上的理論上限允許紅黑樹在最壞情況下都是高效的，而不同于普通的二叉查找樹。
要知道為什么這些性質確保了這個結果，注意到性質4導致了路徑不能有兩個毗連的紅色節點就足夠了。最短的可能路徑都是黑色節點，最長的可能路徑有交替的紅色和黑色節點。因為根據性質5所有最長的路徑都有相同數目的黑色節點，這就表明了沒有路徑能多于任何其他路徑的兩倍長。
在很多樹數據結構的表示中，一個節點有可能只有一個子節點，而葉子節點包含數據。用這種范例表示紅黑樹是可能的，但是這會改變一些性質并使算法復雜。為此，本文中我們使用"nil葉子"或"空（null）葉子"，如上圖所示，它不包含數據而只充當樹在此結束的指示。這些節點在繪圖中經常被省略，導致了這些樹好像同上述原則相矛盾，而實際上不是這樣。與此有關的結論是所有節點都有兩個子節點，盡管其中的一個或兩個可能是空葉子。
因為每一個紅黑樹也是一個特化的二叉查找樹，因此紅黑樹上的只讀操作與普通二叉查找樹上的只讀操作相同。然而，在紅黑樹上進行插入操作和刪除操作會導致不再符合紅黑樹的性質。恢復紅黑樹的性質需要少量的顏色變更（實際是非常快速的）和不超過三次樹旋轉（對于插入操作是兩次）。雖然插入和刪除很復雜，但操作時間仍可以保持為次。
我們首先以二叉查找樹的方法增加節點并標記它為紅色。（如果設為黑色，就會導致根到葉子的路徑上有一條路上，多一個額外的黑節點，這個是很難調整的。但是設為紅色節點后，可能會導致出現兩個連續紅色節點的沖突，那么可以通過顏色調換（color flips）和樹旋轉來調整。）下面要進行什么操作取決于其他臨近節點的顏色。同人類的家族樹中一樣，我們將使用術語''叔父節點''來指一個節點的父節點的兄弟節點。注意：
* 性質1和性質3總是保持著。
* 性質4-{}-只在增加紅色節點、重繪黑色節點為紅色，或做旋轉時受到威脅。
* 性質5-{}-只在增加黑色節點、重繪紅色節點為黑色，或做旋轉時受到威脅。
在下面的示意圖中，將要插入的節點標為N，N的父節點標為P，N的祖父節點標為G，N的叔父節點標為U。在圖中展示的任何顏色要么是由它所處情形這些所作的假定，要么是假定所暗含（imply）的。
對于每一種情形，我們將使用C示例代碼來展示。通過下列函數，可以找到一個節點的叔父和祖父節點：
node* grandparent(node *n){
return n->parent->parent;
node* uncle(node *n){
if(n->parent == grandparent(n)->left)
return grandparent (n)->right;
return grandparent (n)->left;
情形1:新節點N位于樹的根上，沒有父節點。在這種情形下，我們把它重繪為黑色以滿足性質2。因為它在每個路徑上對黑節點數目增加一，性質5符合。
void insert_case1(node *n){
if(n->parent == NULL)
n->color = BLACK;
insert_case2 (n);
情形2:新節點的父節點P是黑色，所以性質4沒有失效（新節點是紅色的）。在這種情形下，樹仍是有效的。性質5也未受到威脅，盡管新節點N有兩個黑色葉子子節點；但由于新節點N是紅色，通過它的每個子節點的路徑就都有同通過它所取代的黑色的葉子的路徑同樣數目的黑色節點，所以依然滿足這個性質。
void insert_case2(node *n){
if(n->parent->color == BLACK)
return; /* 樹仍舊有效*/
insert_case3 (n);
注意：在下列情形下我們假定新節點的父節點為紅色，所以它有祖父節點；因為如果父節點是根節點，那父節點就應當是黑色。所以新節點總有一個叔父節點，盡管在情形4和5下它可能是葉子節點。
情形3示意圖
情形3:如果父節點P和叔父節點U二者都是紅色，（此時新插入節點N做為P的左子節點或右子節點都屬于情形3，這里右圖僅顯示N做為P左子的情形）則我們可以將它們兩個重繪為黑色并重繪祖父節點G為紅色（用來保持性質5）。現在我們的新節點N有了一個黑色的父節點P。因為通過父節點P或叔父節點U的任何路徑都必定通過祖父節點G，在這些路徑上的黑節點數目沒有改變。但是，紅色的祖父節點G可能是根節點，這就違反了性質2，也有可能祖父節點G的父節點是紅色的，這就違反了性質4。為了解決這個問題，我們在祖父節點G上遞歸地進行情形1的整個過程。（把G當成是新加入的節點進行各種情形的檢查）
void insert_case3(node *n){
if(uncle(n) != NULL && uncle (n)->color == RED) {
n->parent->color = BLACK;
uncle (n)->color = BLACK;
grandparent (n)->color = RED;
insert_case1(grandparent(n));
insert_case4 (n);
注意：在余下的情形下，我們假定父節點P是其祖父G的左子節點。如果它是右子節點，情形4和情形5中的''左''和''右''應當對調。
情形4示意圖
情形4:父節點P是紅色而叔父節點U是黑色或缺少，并且新節點N是其父節點P的右子節點而父節點P又是其父節點的左子節點。在這種情形下，我們進行一次左旋轉調換新節點和其父節點的角色;接著，我們按情形5處理以前的父節點P以解決仍然失效的性質4。注意這個改變會導致某些路徑通過它們以前不通過的新節點N（比如圖中1號葉子節點）或不通過節點P（比如圖中3號葉子節點），但由于這兩個節點都是紅色的，所以性質5仍有效。
void insert_case4(node *n){
if(n == n->parent->right && n->parent == grandparent(n)->left) {
rotate_left(n);
n = n->left;
} else if(n == n->parent->left && n->parent == grandparent(n)->right) {
rotate_right(n);
n = n->right;
insert_case5 (n);
情形5示意圖
情形5：父節點P是紅色而叔父節點U是黑色或缺少，新節點N是其父節點的左子節點，而父節點P又是其父節點G的左子節點。在這種情形下，我們進行針對祖父節點G的一次右旋轉；在旋轉產生的樹中，以前的父節點P現在是新節點N和以前的祖父節點G的父節點。我們知道以前的祖父節點G是黑色，否則父節點P就不可能是紅色（如果P和G都是紅色就違反了性質4，所以G必須是黑色）。我們切換以前的父節點P和祖父節點G的顏色，結果的樹滿足性質4。性質5也仍然保持滿足，因為通過這三個節點中任何一個的所有路徑以前都通過祖父節點G，現在它們都通過以前的父節點P。在各自的情形下，這都是三個節點中唯一的黑色節點。
void insert_case5(node *n){
if(n == n->parent->left && n->parent == grandparent(n)->left) {
rotate_right(n->parent);
/* Here, n == n->parent->right && n->parent == grandparent (n)->right */
rotate_left(n->parent);
注意插入實際上是原地算法，因為上述所有調用都使用了尾部遞歸。
如果需要刪除的節點有兩個兒子，那么問題可以被轉化成刪除另一個只有一個兒子的節點的問題（為了表述方便，這里所指的兒子，為非葉子節點的兒子）。對于二叉查找樹，在刪除帶有兩個非葉子兒子的節點的時候，我們要么找到它左子樹中的最大元素、要么找到它右子樹中的最小元素，并把它的值轉移到要刪除的節點中（如在這里所展示的那樣）。我們接著刪除我們從中復制出值的那個節點，它必定有少于兩個非葉子的兒子。因為只是復制了一個值（沒有復制顏色），不違反任何性質，這就把問題簡化為如何刪除最多有一個兒子的節點的問題。它不關心這個節點是最初要刪除的節點還是我們從中復制出值的那個節點。
在本文余下的部分中，我們只需要討論刪除只有一個兒子的節點（如果它兩個兒子都為空，即均為葉子，我們任意將其中一個看作它的兒子）。如果我們刪除一個紅色節點（此時該節點的兒子將都為葉子節點），它的父親和兒子一定是黑色的。所以我們可以簡單的用它的黑色兒子替換它，并不會破壞性質3和性質4。通過被刪除節點的所有路徑只是少了一個紅色節點，這樣可以繼續保證性質5。另一種簡單情況是在被刪除節點是黑色而它的兒子是紅色的時候。如果只是去除這個黑色節點，用它的紅色兒子頂替上來的話，會破壞性質5，但是如果我們重繪它的兒子為黑色，則曾經通過它的所有路徑將通過它的黑色兒子，這樣可以繼續保持性質5。
需要進一步討論的是在要刪除的節點和它的兒子二者都是黑色的時候，這是一種復雜的情況（這種情況下該節點的兩個兒子都是葉子節點，否則若其中一個兒子是黑色非葉子節點，另一個兒子是葉子節點，那么從該節點通過非葉子節點兒子的路徑上的黑色節點數最小為2，而從該節點到另一個葉子節點兒子的路徑上的黑色節點數為1，違反了性質5）。我們首先把要刪除的節點替換為它的兒子。出于方便，稱呼這個兒子為N（在新的位置上），稱呼它的兄弟（它父親的另一個兒子）為S。在下面的示意圖中，我們還是使用P稱呼N的父親，SL稱呼S的左兒子，SR稱呼S的右兒子。我們將使用下述函數找到兄弟節點：
struct node *
sibling(struct node *n)
if(n == n->parent->left)
return n->parent->right;
return n->parent->left;
我們可以使用下列代碼進行上述的概要步驟，這里的函數replace_node替換child到n在樹中的位置。出于方便，在本章節中的代碼將假定空葉子被用不是NULL的實際節點對象來表示（在''插入''章節中的代碼可以同任何一種表示一起工作）。
delete_one_child(struct node *n)
* Precondition: n has at most one non-null child.
struct node *child = is_leaf(n->right)? n->left : n->right;
replace_node(n, child);
if(n->color == BLACK){
if(child->color == RED)
child->color = BLACK;
delete_case1 (child);
free (n);
如果N和它初始的父親是黑色，則刪除它的父親導致通過N的路徑都比不通過它的路徑少了一個黑色節點。因為這違反了性質5，樹需要被重新平衡。有幾種情形需要考慮：
情形1: N是新的根。在這種情形下，我們就做完了。我們從所有路徑去除了一個黑色節點，而新根是黑色的，所以性質都保持著。
delete_case1(struct node *n)
if(n->parent != NULL)
delete_case2 (n);
注意：在情形2、5和6下，我們假定N是它父親的左兒子。如果它是右兒子，則在這些情形下的''左''和''右''應當對調。
情形2示意圖
情形2： S是紅色。在這種情形下我們在N的父親上做左旋轉，把紅色兄弟轉換成N的祖父，我們接著對調N的父親和祖父的顏色。完成這兩個操作后，盡管所有路徑上黑色節點的數目沒有改變，但現在N有了一個黑色的兄弟和一個紅色的父親（它的新兄弟是黑色因為它是紅色S的一個兒子），所以我們可以接下去按情形4、情形5或情形6來處理。
（注意：這里的圖中沒有顯示出來，N是刪除了黑色節點后替換上來的子節點，所以這個過程中由P->X->N變成了P->N，實際上是少了一個黑色節點，也可以理解為Parent(Black)和Silbing(Red)那么他們的孩子黑色節點的數目肯定不等，讓他們做新兄弟肯定是不平衡的，還需后面繼續處理。這里看英文版本的比較的明了）
delete_case2(struct node *n)
struct node *s = sibling (n);
if(s->color == RED){
n->parent->color = RED;
s->color = BLACK;
delete_case3 (n);
情形3： N的父親、S和S的兒子都是黑色的。在這種情形下，我們簡單的重繪S為紅色。結果是通過S的所有路徑，它們就是以前''不''通過N的那些路徑，都少了一個黑色節點。因為刪除N的初始的父親使通過N的所有路徑少了一個黑色節點，這使事情都平衡了起來。但是，通過P的所有路徑現在比不通過P的路徑少了一個黑色節點，所以仍然違反性質5。要修正這個問題，我們要從情形1開始，在P上做重新平衡處理。
delete_case3(struct node *n)
if((n->parent->color == BLACK)&&
(s->color == BLACK)&&
(s->left->color == BLACK)&&
(s->right->color == BLACK)) {
s->color = RED;
delete_case1(n->parent);
delete_case4 (n);
情形4： S和S的兒子都是黑色，但是N的父親是紅色。在這種情形下，我們簡單的交換N的兄弟和父親的顏色。這不影響不通過N的路徑的黑色節點的數目，但是它在通過N的路徑上對黑色節點數目增加了一，添補了在這些路徑上刪除的黑色節點。
delete_case4(struct node *n)
if（(n->parent->color == RED)&&
delete_case5 (n);
情形5： S是黑色，S的左兒子是紅色，S的右兒子是黑色，而N是它父親的左兒子。在這種情形下我們在S上做右旋轉，這樣S的左兒子成為S的父親和N的新兄弟。我們接著交換S和它的新父親的顏色。所有路徑仍有同樣數目的黑色節點，但是現在N有了一個黑色兄弟，他的右兒子是紅色的，所以我們進入了情形6。N和它的父親都不受這個變換的影響。
delete_case5(struct node *n)
if（s->color == BLACK){ /* this if statement is trivial,
due to Case 2(even though Case two changed the sibling to a sibling's child,
the sibling's child can't be red, since no red parent can have a red child). */
// the following statements just force the red to be on the left of the left of the parent,
// or right of the right, so case six will rotate correctly.
if((n == n->parent->left)&&
(s->right->color == BLACK)&&
(s->left->color == RED)) { // this last test is trivial too due to cases 2-4.
s->left->color = BLACK;
rotate_right (s);
} else if((n == n->parent->right)&&
(s->right->color == RED)) {// this last test is trivial too due to cases 2-4.
s->right->color = BLACK;
rotate_left (s);
delete_case6 (n);
情形6示意圖
情形6： S是黑色，S的右兒子是紅色，而N是它父親的左兒子。在這種情形下我們在N的父親上做左旋轉，這樣S成為N的父親（P）和S的右兒子的父親。我們接著交換N的父親和S的顏色，并使S的右兒子為黑色。子樹在它的根上的仍是同樣的顏色，所以性質3沒有被違反。但是，N現在增加了一個黑色祖先：要么N的父親變成黑色，要么它是黑色而S被增加為一個黑色祖父。所以，通過N的路徑都增加了一個黑色節點。
此時，如果一個路徑不通過N，則有兩種可能性：
* 它通過N的新兄弟。那么它以前和現在都必定通過S和N的父親，而它們只是交換了顏色。所以路徑保持了同樣數目的黑色節點。
* 它通過N的新叔父，S的右兒子。那么它以前通過S、S的父親和S的右兒子，但是現在只通過S，它被假定為它以前的父親的顏色，和S的右兒子，它被從紅色改變為黑色。合成效果是這個路徑通過了同樣數目的黑色節點。
在任何情況下，在這些路徑上的黑色節點數目都沒有改變。所以我們恢復了性質4。在示意圖中的白色節點可以是紅色或黑色，但是在變換前后都必須指定相同的顏色。
delete_case6(struct node *n)
s->color = n->parent->color;
if(n == n->parent->left){
同樣的，函數調用都使用了尾部遞歸，所以算法是原地算法。此外，在旋轉之后不再做遞歸調用，所以進行了恒定數目（最多3次）的旋轉。
#define BLACK 1
#define RED 0
class bst {
struct Node {
bool color;
Node *leftTree, *rightTree, *parent;
Node : value(0), color(RED), leftTree(NULL), rightTree(NULL), parent(NULL) { }
Node* grandparent {
if(parent == NULL){
return parent->parent;
Node* uncle {
if(grandparent == NULL) {
if(parent == grandparent->rightTree)
return grandparent->leftTree;
return grandparent->rightTree;
Node* sibling {
if(parent->leftTree == this)
return parent->rightTree;
return parent->leftTree;
void rotate_right(Node *p){
Node *gp = p->grandparent;
Node *fa = p->parent;
Node *y = p->rightTree;
fa->leftTree = y;
if(y != NIL)
y->parent = fa;
p->rightTree = fa;
fa->parent = p;
if(root == fa)
root = p;
p->parent = gp;
if(gp != NULL){
if(gp->leftTree == fa)
gp->leftTree = p;
gp->rightTree = p;
void rotate_left(Node *p){
if(p->parent == NULL){
Node *y = p->leftTree;
fa->rightTree = y;
p->leftTree = fa;
void inorder(Node *p){
if(p == NIL)
if(p->leftTree)
inorder(p->leftTree);
cout value rightTree)
inorder(p->rightTree);
string outputColor (bool color) {
return color ? "BLACK" : "RED";
Node* getSmallestChild(Node *p){
if(p->leftTree == NIL)
return getSmallestChild(p->leftTree);
bool delete_child(Node *p, int data){
if(p->value > data){
if(p->leftTree == NIL){
return delete_child(p->leftTree, data);
} else if(p->value rightTree == NIL){
return delete_child(p->rightTree, data);
} else if(p->value == data){
if(p->rightTree == NIL){
delete_one_child (p);
Node *smallest = getSmallestChild(p->rightTree);
swap(p->value, smallest->value);
delete_one_child (smallest);
void delete_one_child(Node *p){
Node *child = p->leftTree == NIL ? p->rightTree : p->leftTree;
if(p->parent == NULL && p->leftTree == NIL && p->rightTree == NIL){
p = NULL;
delete  p;
child->parent = NULL;
root = child;
root->color = BLACK;
if(p->parent->leftTree == p){
p->parent->leftTree = child;
p->parent->rightTree = child;
child->parent = p->parent;
if(p->color == BLACK){
if(child->color == RED){
delete_case (child);
delete p;
void delete_case(Node *p){
p->color = BLACK;
if(p->sibling->color == RED) {
p->parent->color = RED;
p->sibling->color = BLACK;
if(p == p->parent->leftTree)
//rotate_left(p->sibling);
rotate_left(p->parent);
//rotate_right(p->sibling);
rotate_right(p->parent);
if(p->parent->color == BLACK && p->sibling->color == BLACK
&& p->sibling->leftTree->color == BLACK && p->sibling->rightTree->color == BLACK) {
p->sibling->color = RED;
delete_case(p->parent);
} else if(p->parent->color == RED && p->sibling->color == BLACK
p->parent->color = BLACK;
if(p->sibling->color == BLACK) {
if(p == p->parent->leftTree && p->sibling->leftTree->color == RED
&& p->sibling->rightTree->color == BLACK) {
p->sibling->leftTree->color = BLACK;
rotate_right(p->sibling->leftTree);
} else if(p == p->parent->rightTree && p->sibling->leftTree->color == BLACK
&& p->sibling->rightTree->color == RED) {
p->sibling->rightTree->color = BLACK;
rotate_left(p->sibling->rightTree);
p->sibling->color = p->parent->color;
if(p == p->parent->leftTree){
rotate_left(p->sibling);
rotate_right(p->sibling);
void insert(Node *p, int data){
if(p->value >= data){
if(p->leftTree != NIL)
insert(p->leftTree, data);
Node *tmp = new Node;
tmp->value = data;
tmp->leftTree = tmp->rightTree = NIL;
tmp->parent = p;
p->leftTree = tmp;
insert_case (tmp);
if(p->rightTree != NIL)
insert(p->rightTree, data);
p->rightTree = tmp;
void insert_case(Node *p){
if(p->parent->color == RED){
if(p->uncle->color == RED) {
p->parent->color = p->uncle->color = BLACK;
p->grandparent->color = RED;
insert_case(p->grandparent);
if(p->parent->rightTree == p && p->grandparent->leftTree == p->parent) {
rotate_left(p);
rotate_right(p);
} else if(p->parent->leftTree == p && p->grandparent->rightTree == p->parent) {
} else if(p->parent->leftTree == p && p->grandparent->leftTree == p->parent) {
} else if(p->parent->rightTree == p && p->grandparent->rightTree == p->parent) {
void DeleteTree(Node *p){
p == NIL){
DeleteTree(p->leftTree);
DeleteTree(p->rightTree);
NIL = new Node;
NIL->color = BLACK;
root = NULL;
~bst {
if (root)
DeleteTree (root);
delete NIL;
void inorder {
if(root == NULL)
inorder (root);
cout color = BLACK;
root->leftTree = root->rightTree = NIL;
root->value = x;
insert(root, x);
bool delete_value (int data) {
return delete_child(root, data);
Node *root, *NIL;
包含''n''個內部節點的紅黑樹的高度是。
* 表示以節點為根的子樹的高度。
* 表示從到子樹中任何葉子的黑色節點的數目（如果是黑色則不計數它，也叫做黑色高度）。
引理：以節點為根的子樹有至少個內部節點。
引理的證明（通過歸納高度）：
如果的高度是零則它必定是NIL，因此。所以：
歸納假設：的有個內部節點暗示了h = k+1的有個內部節點。
因為有h> 0所以它是個內部節點。同樣的它有黑色高度要么是bh要么是bh-1（依據是紅色還是黑色）的兩個兒子。通過歸納假設每個兒子都有至少個內部接點，所以有：
個內部節點。
使用這個引理我們現在可以展示出樹的高度是對數性的。因為在從根到葉子的任何路徑上至少有一半的節點是黑色（根據紅黑樹性質4），根的黑色高度至少是。通過引理我們得到：
因此根的高度是。
*  Mathworld: Red-Black Tree
*  San Diego State University: CS 660: Red-Black tree notes, by Roger Whitney
* Cormen, Leiserson, Rivest, Stein. ''Introduction to Algorithms.'' Massachusetts: The MIT Press, 2002. pp273-77. ISBN 0-07-013151-1
*  An applet + quick explanation
*  Red/Black Tree Demonstration
*  An example（animated GIF, 200KB）
*  An example（static picture）
*  Another explanation（pictures, source code, and Java interactive animation）
*  Red-Black Tree Demonstration by David M. Howard
*  RBT: A SmallEiffel Red-Black Tree Library
*  libredblack: A C Red-Black Tree Library
*  Red-Black Tree C++ Code
*  Red-Black Trees by Thomas Niemann
桃園龜山的茶園
臺灣茶文化一詞泛指與臺灣相關的茶史、茶葉、茶藝等。臺灣茶發展至今已有兩百多年，是臺灣民眾傳統的飲料之一，與臺灣的人文風俗有密不可分的關係。清治時期的臺灣，茶是最大的生產和出口品之一，茶葉商人將產業重心從原本的南臺灣移轉到了臺灣北部，對臺灣文化有重要的影響，更促進了臺北與全臺經濟的發展。
除了從中國大陸移植的茶葉之外，臺灣早有原生茶種，根據諸羅縣誌（1717年）記載：「臺灣中南部地方，海拔八百到兩千尺的山地，有野生茶樹，附近居民採其幼芽，簡單加工製造，而作自家飲用。」而根據淡水廳誌中記載：「貓螺山產茶，性極寒，蕃不敢飲。」這種原生茶就是所謂的臺灣山茶，目前仍可以在臺灣中南部山區發現這種野生茶樹，新的紅茶品種臺茶十八號，市場名為「紅玉」，就是以臺灣原生山茶與緬甸大葉種茶葉雜交育種而成。
由於福建泉州府安溪移民的移入，茶產業逐漸興盛。安溪號稱中國茶都，以產茶聞名，是最具盛名的「鐵觀音」在清雍正年間於安溪始創，安溪茶人隨即推廣，成為中國名茶之一，而安溪移民精湛的製茶工藝也引入臺灣。
同治年間（1856至1875年），英國商人約翰·杜德對臺灣茶業發展有很大的貢獻，他移進茶苗、提供技術指導、收購茗茶、設精製廠並外銷茗茶，使得臺灣的茶業大幅發展，杜德的買辦是知名的茶葉商人李春生。
當時臺灣外銷的茶稱為「Formosa Tea」。
臺灣日治時期（1914）在爪哇島北岸三寶瓏的福爾摩沙茶館（Formosa Tea House）
1915年美國舊金山「巴拿馬太平洋國際博覽會」的福爾摩沙茶屋
這時期的臺灣茶品種除了原本從福建傳入的以外，又經過日本人歷年的試驗，由平鎮茶業試驗所選出青心烏龍、青心大冇、大葉烏龍與硬枝紅心等四大品種作獎勵推廣種植。日本人並大力推廣紅茶的種植，讓Formosa Tea/Formosa Black Tea國際化，外銷歐洲與美洲等地。
1899年，「臺灣農林公司」的前身「日本三井物產株式會社」於臺北海山地區及桃園大溪地區開拓大規模茶園，並設立新式製茶廠專製紅茶，生產享譽遐邇的「日東紅茶」，其中於1908年設立的海山茶廠，時為東亞最大茶廠。1937年，日月潭紅茶以「Formosa Black Tea」為名，送至英國倫敦拍賣會，得到很高的評價，當時亦為日本天皇御用貢品。
1926年（大正15年），出身日本群馬的新井耕吉郎奉派至臺灣總督府中央研究所平鎮茶葉試驗所擔任技師。1940年（昭和15年），總督府推動紅茶推廣補助計畫在魚池鄉成立紅茶試驗支所，新井耕吉郎主要工作是負責研究、改良讓來自印度阿薩姆地區的茶苗能在南投日月潭旁的貓蘭山上生根，並透過農業技術早日達到量產的目標。新井到臺灣履新的前一年，印度阿薩姆茶種才在南投魚池鄉試種成功。不過紅茶補助計畫在1942年（昭和17年）受戰爭影響而中斷。當時阿薩姆紅茶是最受歐美市場歡迎的茶種，而臺灣能成功培育出阿薩姆紅茶，代表「Formosa Tea」，這個臺灣茶品牌更能跟印度紅茶分庭抗禮。
因二次大戰爆發，糧食與勞力皆極缺，除部分茶園改種糧食作物以外，原本投注在茶園的農村人力也移轉到其他方面，致使臺灣茶產業極度萎縮，幾乎減產了百分之九十以上。
隨著臺灣經濟起飛，人們對於生活與飲食有了新的追求，於是各地茶藝館紛紛成立，成為人們遊憩生活裡重要的品茗空間。
此時期振興了綠茶的生產，復原茶種、改良茶種、改進各種製茶法、茶產品多元化、推廣茶區。使得原本以外銷為主的臺灣茶業轉為以內銷為主，使得停滯不前的茶業再次復甦。
茶葉被視為相當正式的飲料。在公開的場合中，通常都會以茶來招待來賓；上等的茶葉也是非常好的饋贈禮品。在各種宴會中，如果因為某些原因而不能敬酒，就會改以茶代酒，也不失禮貌。
順應健康飲食的風潮，茶葉也以各種不同的形式出現在市面上。不只是茶葉飲料有相當不錯的銷售量，超越碳酸飲料，各種點心、麵包、蛋糕等也紛紛將茶葉融入食品之中，創造出新的口味。也出現料理將茶葉入菜，以健康、不膩口為號召。臺灣有一最為眾人所知的小吃便是以茶葉融入滷汁再用來滷蛋，此小吃即為茶葉蛋。
近代在臺灣社會流行的泡沫紅茶文化是臺灣茶文化中一個新的發展，各種連鎖茶飲店紛紛成立，口味亦極為多變，其中最為人所熟知的代表性茶飲珍珠奶茶，已成為令臺灣揚名國際的代表性飲料之一。
工夫茶是一種茶藝形式，在臺灣茶文化中佔有非常重要的地位。工夫茶起源於廣東省潮汕地區，由於極為講究沏、泡茶的方式，對全過程操作手藝要求極高，沒有一定的工夫是做不到的，因此稱為工夫茶。此外，這個「工夫」也還表現在品飲和對茶具的要求方面。
工夫茶的茶具一般比較小巧，一壺帶二到四個杯子不等，多為三個。常用泉水、井水沖泡。一般不用紅茶和綠茶，而採用烏龍茶，因為只有這種半發酵的茶葉才能沖出所需要的色香味。
*鹿谷鄉農會  http://www.lugufa.org.tw/
*臺灣鄉土教育發展促進協會編著，2006年4月，以茶代酒，臺茶有約護照。臺北市：臺灣鄉土教育發展促進協會。
*臺灣茶相關網頁http://besttaiwantea.weebly.com/
*  臺灣連鎖飲料店 - Google Sites
李岳（，），本名李豐嘉，前藝名西瓜哥哥，曾為臺灣東森幼幼臺的兒童節目主持人群之一，於2021年4月1日宣佈退出。
西瓜哥哥本身除了是YOYO家族成員外，也曾參與多部電視劇演出，同時也是「元氣G-boys」（元氣）組合的其中一位成員（其餘兩位為沈建宏與肯尼斯）。
*《李岳的交換日記》。李岳 著，臺視文化公司2004年9月2日初版，ISBN 9575656385
*《西瓜李岳哥哥元氣十足的童話英雄》。李岳 著，尖端出版公司2006年7月15日初版，ISBN 9571033162
*《西瓜李岳哥哥不可思議的童話奇遇》。李岳 著，尖端出版公司2007年5月15日初版，ISBN：9789571034577
*《瓜瓜兵團的煙花島歷險記》。李岳（西瓜哥哥）著，三暉出版社2008年8月1日初版
*我的秘密花園1（飾 高英偉）
*我的秘密花園2（飾 高英偉）
*單身宿舍連環泡（飾 梁光寶）
*2010年萌學園之萌騎士傳奇（飾 拳霸）
*2013年萌學園5異界對決（飾 老兵大軍）
*2014年萌學園六復活之戰（飾 老兵大軍）
*YoYo點點名2-懶人樹小步舞
*YoYo點點名3-YoYo Love You
*YoYo點點名4-快樂木屐鞋
*YoYo點點名5-郊遊點點名
*YoYo點點名6-夢想專賣店
*YoYo點點名精選輯-舞蹈教室
*YoYo點點名7-YoYo嘿嗨哈
*YoYo點點名8-動物音樂課
*YoYo點點名9-愛是大明星
*YoYo點點名精選輯-金曲大點名
*YoYo點點名10-點十成金
*YoYo點點名11-V.V.I.P
*YOYO點點名12-YoYo百分百
*YOYO點點名13-YoYo新世界
*在水蜜桃姐姐-朱安禹『水蜜桃聲明』中友情獻唱水蜜桃聲明、馬拉松
*在我的秘密花園2原聲帶中有念RAP
*在水蜜桃姐姐-朱安禹『世界真奇妙』中友情獻唱虹彩妹妹、潑水歌、歡樂嘉年華、pizza歌
*民視無線臺→華視主頻道《電玩大帝國》
塞爾維亞復活節彩蛋
復活節彩蛋是西方國家在慶祝復活節時特別裝飾性的蛋。傳統上一般是使用經過染色的蛋類。現代的習慣通常是使用蛋狀的巧克力代替。彩蛋一般事先藏好，然后由兒童來找尋。是復活節的象征性物品，是表達友誼、關愛和祝愿的方式。基督徒以復活蛋比喻為「新生命的開始」，象徵「耶穌復活、走出石墓」。
用蛋來象徵生命的復活，在耶穌基督降生之前就已經很流行。西歐人士相信蛋有兩次生命，第一次是由母雞產下，代表「新生」，第二次則是破殼而出，代表「重生」，重生也就象徵了復活。
在復活節時，天主教信徒會把蛋涂成紅色，請神父祝圣，自己也用作禮物送給朋友，這就是送彩蛋的最早起源。
在日耳曼文化地區（德意志地區、北歐和英語世界），復活節彩蛋通常和復活節兔一起出現。也有人認為復活節蛋是由復活節兔子帶來的。
在法國和比利時，據說蛋是由天空中飛過的鐘扔下的。在基督教的傳統中，教堂的鐘會在復活節前一個周五保持沉默，為了紀念受難而死的基督，然后在復活節的早上重新敲響來紀念主的重生。教堂的鐘，會帶著翅膀，先飛向羅馬，再在復活節的早上飛回來，途中灑落復活節的蛋。
在包括電腦、電子遊戲機、影碟等各種互動媒體之中的特意放置的娛樂用隱藏功能或隱藏訊息亦被稱作“復活節彩蛋”。
關鍵詞，特指單個媒體在制作使用索引時，所用到的詞匯。是圖書館學中的詞匯，關鍵詞搜索是網絡搜索索引主要方法之一。
例如一本書的書名或部分書名、副標題、作者名都可以作為本書的關鍵詞用于檢索。現在大部分的圖書及網上檢索都是用關鍵詞檢索的形式。
相對于關鍵詞，在檢索中還有導-{}-出詞的應用。
瓦西里·瓦西里耶維奇·康丁斯基（，），出生于俄羅斯的畫家和美術理論家。
儒略曆1866年12月4日，康丁斯基出生于俄羅斯莫斯科，在敖德薩度過童年。進莫斯科大學后，就讀法律和經濟學。1896年在慕尼黑學習繪畫（寫生，素描和解剖學），在俄國革命之后的1918年返回莫斯科。因為前衛藝術與官方的現實主義藝術相悖，1921年他回到德國，從1922年在包豪斯開始任教，1928年加入德國國籍，直至1933年包豪斯被納粹關閉。此后定居法國，在1939年加入法國國籍，1941年法國被納粹占領，康定斯基沒有選擇前往美國定居，他在1944年逝于巴黎近郊的塞納的內依。
與皮特·蒙德里安和馬列維奇一起，康定斯基被認為是抽象藝術的先驅。他還與其他人共同成立了一個為時不長但很有影響力的藝術團體“藍騎士”。康定斯基的繪畫售價曾近一千五百萬美元。索羅門·古根海姆美術館是康定斯基作品的最大藏家之一。
康丁斯基具有聯覺（知覺混合）的能力，他可以十分清晰地聽見色彩。這一效果對他的藝術產生主要影響。他甚至把他的繪畫命名為“即興”和“結構”，仿佛它們不是繪畫而是音樂作品。
康定斯基的純抽象藝術并不是突如其來的。
美術學家“Hajo Duechting”把康定斯基按照藝術特征劃分為六個時期：
* 初期(莫斯科1866年-1896年)
* 變形(慕尼黑1896年-1911年)
* 抽象的突破(藍騎士 1911年-1914年)
* 俄羅斯間奏曲(1914年-1921年)
* 點，線和面(包豪斯 1922年-1933年)
* 生物的抽象(巴黎 1934年-1944年)
康定斯基在莫斯科的少年時代的生活賦予他諸多藝術靈感。在童年時代，他對色彩具有異乎尋常的感受力和非凡的記憶力。這可能由于他具有聯覺使得他如同看見色彩一樣清晰地聽見色彩。在莫斯科生活的年代他一直保持著這種對色彩的強烈興趣，盡管當時他還沒有顯出要鉆研藝術的傾向。
1889年康定斯基參加了一個民俗調查小組，對莫斯科北部的沃洛格達地區進行旅行考察。他研究了當地民間藝術中在深色背景上使用明亮色彩的騙人手法，這種手法在他早期作品中留下了痕跡。
幾年后康定斯基寫道“色彩是琴鍵，眼睛是是和聲，靈魂則是有著眾多琴弦的鋼琴”。
1896年，康定斯基剛好30歲，他放棄了教授法律和經濟學的有前途的教職，前往慕尼黑進入藝術學院。就在這一年離開莫斯科之前，他看到了莫奈的畫展，尤其是聆聽了對《乾草堆》的解說，對具有高度色彩感受力的他來講，這幅畫意味著色彩已經從物體本身得以解放。
在藝術學院，康定斯基的條件非常有利，他年長而且成熟，不僅作為繪畫的初學者，而且還作為一個真正的藝術理論家。盡管這一時期的作品估計相當多，可惜現存的很少。20世紀開始后，情況有所改觀。很多自然風景畫和城鎮畫都留了下來，這些畫用色粗厚，形象可辨。康定斯基的絕大多數畫都不強調人物，一個例外是“舊俄羅斯的星期天”（1904年），畫中農民和貴族站在城墻的前面，這是一幅重新創作的畫，色彩極其豐富，至于富于幻想那是當然的。
“馬上情侶”（1907年）描寫了馬背上的一對年輕人，男子溫柔小心地擁著女子，途經一座俄羅斯城堡，正準備涉河。馬在默默的走著，遠處城堡璀璨的夜色使河流和樹葉帶上了色彩斑斕的反光圓點。
“藍騎士”（1903）也許是康定斯基在1900年的最初十年里的最重要作品。畫中一名騎士身披藍色斗篷，身跨白馬，飛速穿越一片山地牧場。騎士和馬匹在草地上落下的陰影是深藍色的。畫的前方有很多散亂的藍色陰影，可能是沒畫出來的樹影。藍騎士在繪畫中占有突出的地位，但沒有明確的定論，馬的步態不自然（康定斯基想必知道）。事實上有人認為騎士身攜一孩子，同樣也可以認為騎士還有另外一個陰影。康定斯基把騎士畫成一群色彩的組合，而并不注重細節。“藍騎士”與現代畫家的作品相比沒有特別卓著之處，但是它顯示了過不了幾年后康定斯基所要走的方向。
從1906年到1908年康定斯基花了很多時間周游歐洲，最后在慕尼黑以外的小鎮落腳。“藍色的山” （1908年 - 1909年）是這一期間的作品，顯示了他走向純粹抽象的傾向。一座藍色的山被左右兩顆大樹裹脅，一黃，一紅。三名騎士和其他徒步者組成的行列在畫的底邊穿越。騎士的臉，衣服和馬鞍都涂成單色，騎士和徒步者根本沒有細節描寫。“藍色的山”畫中的色彩使用法顯示了康定斯基進入了一個獨立于形態的，只表現色彩本身的藝術境界。