999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

幾種復雜數據結構的轉換分析

2014-10-29 09:15:37王鋼
電子技術與軟件工程 2014年16期

摘 要

結合概念,運用動態圖形,用通俗的語言對三種數據結構的進行轉換分析,即:二叉樹與樹和森林的相互轉換;圖的最小生成樹的畫法;二叉排序樹轉換成平衡二叉樹。

【關鍵詞】數據結構 二叉樹、樹和森林 最小生成樹 平衡二叉樹 轉換

1 引言

《數據結構》是計算機專業的一門專業基礎課程,同時又是一門抽象性較強的課程,很多初學者都感到難以掌握,特別是對于幾種復雜數據結構的轉換,更是感到難以下手。筆者在總結了多年的教學實踐,在本文中提出幾種復雜數據結構的轉換方法,希望能對研究這方面問題的讀者有所幫助。

2 二叉樹與樹和森林的相互轉換

要確實掌握這一轉換技巧,首先必須搞清這樣幾個概念:

2.1 二叉樹與樹和森林的轉換方式

二叉樹與樹和森林的轉換其實只有兩種:

(1)二叉樹轉換成樹或森林。

(2)森林或樹轉換成二叉樹。

也就是說,樹和森林其實是一個概念,不是樹,就是森林,那種認為這一題目可能有六種轉換的思路是錯誤的。如圖2.1所示。

2.2 二叉樹與樹和森林的轉換分析

二叉樹與樹和森林之所以能夠相互轉換,是因為它們都可以用孩子兄弟表示法或稱二叉鏈表表示法作為存儲結構,從物理結構上看,它們的二叉鏈表是相同的,只是解釋不同而已,這一點可參考有關教科書。

轉換技巧:

必須深刻理解孩子兄弟表示法這一概念,在此舉例說明:

對于圖2.1 a的樹對應唯一的一棵二叉樹:

(1)二叉樹的根結點為A,樹最左邊的第一個孩子B作為A的左子樹根結點,由于A沒有兄弟,則右子樹為空(圖2.1 b);

(2)B結點無孩子,則左子樹為空,右邊的第一個兄弟為C,則右子樹為C(圖2.1 c)

(3)C結點有一個孩子D,則左子樹為D,右邊的第一個兄弟為E,則右子樹為E,E結點既無孩子又無兄弟,則轉換完成(圖2.1 d)。

反之,若將圖2.1 d的二叉樹轉換為樹,則應采取以下方法:

(1)A為樹的根結點,左子樹B作為A的孩子(左孩子);

(2)B結點左子樹為空,說明B結點無孩子,右子樹為C是B的兄弟(右兄弟),B的兄弟必為A的孩子,C與A連接;

(3)C的左子樹為D是C的孩子(左孩子),右子樹E是C的兄弟,C的兄弟也是A的孩子,D和E左、右子樹均為空,說明它們既無兄弟,又無孩子,轉換完成。

森林與二叉樹的相互轉換,在此以圖例說明(如圖2.2所示)。

圖2.2 b: A為根結點,左孩子為B,右兄弟E。

圖2.2 c: B結點無孩子,左子樹為空,但有兩個兄弟C、D。

E結點有一個孩子F為左子樹,有一個兄弟G為右子樹。

圖2.2 d: G結點有一個孩子H為左子樹,右邊無兄弟,右子樹為空。

H結點無孩子,左子樹為空,但有一兄弟I,右子樹為I。

I結點有一孩子J為其左子樹結點,右邊無兄弟,則右子樹為空。

J結點既無孩子又無兄弟,轉換完成。

顯然,對于二叉樹來說,如果根結點無右子樹,則只能轉換為樹,否則必轉換為森林,反之,森林轉換成的二叉樹必有右子樹,樹轉換成的二叉樹必無右子樹。

為了加深掌握這一 方法,再舉如下幾個圖例(如圖2.3所示)。

可見,無論怎樣轉換,根和長子(左邊第一個孩子)是不變的,關鍵是擺正右子樹的位置,在二叉樹轉換成樹或森林的過程中,右子樹是結點的兄弟,既然是兄弟大家就應放在同

一位置上(即同是某一結點的孩子);在森林或樹轉換成二叉樹的過程中,某一結點的兄弟應放在該結點的右子樹上(右兄弟),這一點初學者必須搞清楚。

3 排序二叉樹轉換成平衡二叉樹

由于在構造二叉排序樹的同時轉換為平衡二叉樹用到的概念較多,要掌握此方法,除了確實掌握平衡二叉樹(即AVL樹)的概念和四種基本型的轉換方法外,筆者再強調以下概念:

(1) *a :由于插入結點而使平衡因子絕對值大于1的離插入結點最近的祖先結點;

(2) 最小不平衡子樹:*a與插入方向上離*a最近的的兩個結點構成最小不平衡子樹,

顯然最小不平衡子樹屬于四種基本型;

(3) 二叉排序樹因插入結點失去平衡時,只需對最小不平衡子樹進行旋轉處理,旋轉后,其它結點放在相應的位置上即可。

在此只舉一個實際的例子予以說明:

假設關鍵字序列為(12,24,37,53,45,93),試畫出動態構造此關鍵字序列的平衡二叉樹(如圖4.1所示)。

這種找到*a和最小不平衡子樹后僅對最小不平衡子樹(都是基本型)進行旋轉,其它結點放到相應的正確位置上的方法對于一般的情況是完全適用的,而且容易掌握,正確性能夠得到保證。

4 結語

由于數據結構及其算法的抽象性和動態性,本文在說明以上幾種轉換技巧時使用了大量的動態圖例,實際上,熟練掌握這些方法后,不必畫出中間過程,可根據題目直接得到結果。如果本文能夠對解這些題目的讀者有所幫助,那將是筆者莫大的榮幸。不當之處,還望批評指正。

參考文獻

[1]嚴蔚敏,吳偉民.數據結構(C語言版)[M].北京:清華大學出版社,1997.

[2]許卓群等.數據結構[M].北京:高等教育出版社,1995.

[3]唐策善等.數據結構——用C語言描述[M].北京:高等教育出版社,1995.

[4] 徐紅.數據結構(C語言版)[M].北京:清華大學出版社,2005.

作者簡介

王鋼(1964-),男,碩士學位。現為威海職業學院信息工程系副教授,主要從事C語言、數據結構、計算機圖形學的教學工作。

作者單位

威海職業學院 山東省威海市 264210endprint

摘 要

結合概念,運用動態圖形,用通俗的語言對三種數據結構的進行轉換分析,即:二叉樹與樹和森林的相互轉換;圖的最小生成樹的畫法;二叉排序樹轉換成平衡二叉樹。

【關鍵詞】數據結構 二叉樹、樹和森林 最小生成樹 平衡二叉樹 轉換

1 引言

《數據結構》是計算機專業的一門專業基礎課程,同時又是一門抽象性較強的課程,很多初學者都感到難以掌握,特別是對于幾種復雜數據結構的轉換,更是感到難以下手。筆者在總結了多年的教學實踐,在本文中提出幾種復雜數據結構的轉換方法,希望能對研究這方面問題的讀者有所幫助。

2 二叉樹與樹和森林的相互轉換

要確實掌握這一轉換技巧,首先必須搞清這樣幾個概念:

2.1 二叉樹與樹和森林的轉換方式

二叉樹與樹和森林的轉換其實只有兩種:

(1)二叉樹轉換成樹或森林。

(2)森林或樹轉換成二叉樹。

也就是說,樹和森林其實是一個概念,不是樹,就是森林,那種認為這一題目可能有六種轉換的思路是錯誤的。如圖2.1所示。

2.2 二叉樹與樹和森林的轉換分析

二叉樹與樹和森林之所以能夠相互轉換,是因為它們都可以用孩子兄弟表示法或稱二叉鏈表表示法作為存儲結構,從物理結構上看,它們的二叉鏈表是相同的,只是解釋不同而已,這一點可參考有關教科書。

轉換技巧:

必須深刻理解孩子兄弟表示法這一概念,在此舉例說明:

對于圖2.1 a的樹對應唯一的一棵二叉樹:

(1)二叉樹的根結點為A,樹最左邊的第一個孩子B作為A的左子樹根結點,由于A沒有兄弟,則右子樹為空(圖2.1 b);

(2)B結點無孩子,則左子樹為空,右邊的第一個兄弟為C,則右子樹為C(圖2.1 c)

(3)C結點有一個孩子D,則左子樹為D,右邊的第一個兄弟為E,則右子樹為E,E結點既無孩子又無兄弟,則轉換完成(圖2.1 d)。

反之,若將圖2.1 d的二叉樹轉換為樹,則應采取以下方法:

(1)A為樹的根結點,左子樹B作為A的孩子(左孩子);

(2)B結點左子樹為空,說明B結點無孩子,右子樹為C是B的兄弟(右兄弟),B的兄弟必為A的孩子,C與A連接;

(3)C的左子樹為D是C的孩子(左孩子),右子樹E是C的兄弟,C的兄弟也是A的孩子,D和E左、右子樹均為空,說明它們既無兄弟,又無孩子,轉換完成。

森林與二叉樹的相互轉換,在此以圖例說明(如圖2.2所示)。

圖2.2 b: A為根結點,左孩子為B,右兄弟E。

圖2.2 c: B結點無孩子,左子樹為空,但有兩個兄弟C、D。

E結點有一個孩子F為左子樹,有一個兄弟G為右子樹。

圖2.2 d: G結點有一個孩子H為左子樹,右邊無兄弟,右子樹為空。

H結點無孩子,左子樹為空,但有一兄弟I,右子樹為I。

I結點有一孩子J為其左子樹結點,右邊無兄弟,則右子樹為空。

J結點既無孩子又無兄弟,轉換完成。

顯然,對于二叉樹來說,如果根結點無右子樹,則只能轉換為樹,否則必轉換為森林,反之,森林轉換成的二叉樹必有右子樹,樹轉換成的二叉樹必無右子樹。

為了加深掌握這一 方法,再舉如下幾個圖例(如圖2.3所示)。

可見,無論怎樣轉換,根和長子(左邊第一個孩子)是不變的,關鍵是擺正右子樹的位置,在二叉樹轉換成樹或森林的過程中,右子樹是結點的兄弟,既然是兄弟大家就應放在同

一位置上(即同是某一結點的孩子);在森林或樹轉換成二叉樹的過程中,某一結點的兄弟應放在該結點的右子樹上(右兄弟),這一點初學者必須搞清楚。

3 排序二叉樹轉換成平衡二叉樹

由于在構造二叉排序樹的同時轉換為平衡二叉樹用到的概念較多,要掌握此方法,除了確實掌握平衡二叉樹(即AVL樹)的概念和四種基本型的轉換方法外,筆者再強調以下概念:

(1) *a :由于插入結點而使平衡因子絕對值大于1的離插入結點最近的祖先結點;

(2) 最小不平衡子樹:*a與插入方向上離*a最近的的兩個結點構成最小不平衡子樹,

顯然最小不平衡子樹屬于四種基本型;

(3) 二叉排序樹因插入結點失去平衡時,只需對最小不平衡子樹進行旋轉處理,旋轉后,其它結點放在相應的位置上即可。

在此只舉一個實際的例子予以說明:

假設關鍵字序列為(12,24,37,53,45,93),試畫出動態構造此關鍵字序列的平衡二叉樹(如圖4.1所示)。

這種找到*a和最小不平衡子樹后僅對最小不平衡子樹(都是基本型)進行旋轉,其它結點放到相應的正確位置上的方法對于一般的情況是完全適用的,而且容易掌握,正確性能夠得到保證。

4 結語

由于數據結構及其算法的抽象性和動態性,本文在說明以上幾種轉換技巧時使用了大量的動態圖例,實際上,熟練掌握這些方法后,不必畫出中間過程,可根據題目直接得到結果。如果本文能夠對解這些題目的讀者有所幫助,那將是筆者莫大的榮幸。不當之處,還望批評指正。

參考文獻

[1]嚴蔚敏,吳偉民.數據結構(C語言版)[M].北京:清華大學出版社,1997.

[2]許卓群等.數據結構[M].北京:高等教育出版社,1995.

[3]唐策善等.數據結構——用C語言描述[M].北京:高等教育出版社,1995.

[4] 徐紅.數據結構(C語言版)[M].北京:清華大學出版社,2005.

作者簡介

王鋼(1964-),男,碩士學位。現為威海職業學院信息工程系副教授,主要從事C語言、數據結構、計算機圖形學的教學工作。

作者單位

威海職業學院 山東省威海市 264210endprint

摘 要

結合概念,運用動態圖形,用通俗的語言對三種數據結構的進行轉換分析,即:二叉樹與樹和森林的相互轉換;圖的最小生成樹的畫法;二叉排序樹轉換成平衡二叉樹。

【關鍵詞】數據結構 二叉樹、樹和森林 最小生成樹 平衡二叉樹 轉換

1 引言

《數據結構》是計算機專業的一門專業基礎課程,同時又是一門抽象性較強的課程,很多初學者都感到難以掌握,特別是對于幾種復雜數據結構的轉換,更是感到難以下手。筆者在總結了多年的教學實踐,在本文中提出幾種復雜數據結構的轉換方法,希望能對研究這方面問題的讀者有所幫助。

2 二叉樹與樹和森林的相互轉換

要確實掌握這一轉換技巧,首先必須搞清這樣幾個概念:

2.1 二叉樹與樹和森林的轉換方式

二叉樹與樹和森林的轉換其實只有兩種:

(1)二叉樹轉換成樹或森林。

(2)森林或樹轉換成二叉樹。

也就是說,樹和森林其實是一個概念,不是樹,就是森林,那種認為這一題目可能有六種轉換的思路是錯誤的。如圖2.1所示。

2.2 二叉樹與樹和森林的轉換分析

二叉樹與樹和森林之所以能夠相互轉換,是因為它們都可以用孩子兄弟表示法或稱二叉鏈表表示法作為存儲結構,從物理結構上看,它們的二叉鏈表是相同的,只是解釋不同而已,這一點可參考有關教科書。

轉換技巧:

必須深刻理解孩子兄弟表示法這一概念,在此舉例說明:

對于圖2.1 a的樹對應唯一的一棵二叉樹:

(1)二叉樹的根結點為A,樹最左邊的第一個孩子B作為A的左子樹根結點,由于A沒有兄弟,則右子樹為空(圖2.1 b);

(2)B結點無孩子,則左子樹為空,右邊的第一個兄弟為C,則右子樹為C(圖2.1 c)

(3)C結點有一個孩子D,則左子樹為D,右邊的第一個兄弟為E,則右子樹為E,E結點既無孩子又無兄弟,則轉換完成(圖2.1 d)。

反之,若將圖2.1 d的二叉樹轉換為樹,則應采取以下方法:

(1)A為樹的根結點,左子樹B作為A的孩子(左孩子);

(2)B結點左子樹為空,說明B結點無孩子,右子樹為C是B的兄弟(右兄弟),B的兄弟必為A的孩子,C與A連接;

(3)C的左子樹為D是C的孩子(左孩子),右子樹E是C的兄弟,C的兄弟也是A的孩子,D和E左、右子樹均為空,說明它們既無兄弟,又無孩子,轉換完成。

森林與二叉樹的相互轉換,在此以圖例說明(如圖2.2所示)。

圖2.2 b: A為根結點,左孩子為B,右兄弟E。

圖2.2 c: B結點無孩子,左子樹為空,但有兩個兄弟C、D。

E結點有一個孩子F為左子樹,有一個兄弟G為右子樹。

圖2.2 d: G結點有一個孩子H為左子樹,右邊無兄弟,右子樹為空。

H結點無孩子,左子樹為空,但有一兄弟I,右子樹為I。

I結點有一孩子J為其左子樹結點,右邊無兄弟,則右子樹為空。

J結點既無孩子又無兄弟,轉換完成。

顯然,對于二叉樹來說,如果根結點無右子樹,則只能轉換為樹,否則必轉換為森林,反之,森林轉換成的二叉樹必有右子樹,樹轉換成的二叉樹必無右子樹。

為了加深掌握這一 方法,再舉如下幾個圖例(如圖2.3所示)。

可見,無論怎樣轉換,根和長子(左邊第一個孩子)是不變的,關鍵是擺正右子樹的位置,在二叉樹轉換成樹或森林的過程中,右子樹是結點的兄弟,既然是兄弟大家就應放在同

一位置上(即同是某一結點的孩子);在森林或樹轉換成二叉樹的過程中,某一結點的兄弟應放在該結點的右子樹上(右兄弟),這一點初學者必須搞清楚。

3 排序二叉樹轉換成平衡二叉樹

由于在構造二叉排序樹的同時轉換為平衡二叉樹用到的概念較多,要掌握此方法,除了確實掌握平衡二叉樹(即AVL樹)的概念和四種基本型的轉換方法外,筆者再強調以下概念:

(1) *a :由于插入結點而使平衡因子絕對值大于1的離插入結點最近的祖先結點;

(2) 最小不平衡子樹:*a與插入方向上離*a最近的的兩個結點構成最小不平衡子樹,

顯然最小不平衡子樹屬于四種基本型;

(3) 二叉排序樹因插入結點失去平衡時,只需對最小不平衡子樹進行旋轉處理,旋轉后,其它結點放在相應的位置上即可。

在此只舉一個實際的例子予以說明:

假設關鍵字序列為(12,24,37,53,45,93),試畫出動態構造此關鍵字序列的平衡二叉樹(如圖4.1所示)。

這種找到*a和最小不平衡子樹后僅對最小不平衡子樹(都是基本型)進行旋轉,其它結點放到相應的正確位置上的方法對于一般的情況是完全適用的,而且容易掌握,正確性能夠得到保證。

4 結語

由于數據結構及其算法的抽象性和動態性,本文在說明以上幾種轉換技巧時使用了大量的動態圖例,實際上,熟練掌握這些方法后,不必畫出中間過程,可根據題目直接得到結果。如果本文能夠對解這些題目的讀者有所幫助,那將是筆者莫大的榮幸。不當之處,還望批評指正。

參考文獻

[1]嚴蔚敏,吳偉民.數據結構(C語言版)[M].北京:清華大學出版社,1997.

[2]許卓群等.數據結構[M].北京:高等教育出版社,1995.

[3]唐策善等.數據結構——用C語言描述[M].北京:高等教育出版社,1995.

[4] 徐紅.數據結構(C語言版)[M].北京:清華大學出版社,2005.

作者簡介

王鋼(1964-),男,碩士學位。現為威海職業學院信息工程系副教授,主要從事C語言、數據結構、計算機圖形學的教學工作。

作者單位

威海職業學院 山東省威海市 264210endprint

主站蜘蛛池模板: 免费激情网址| 青青国产成人免费精品视频| 天天综合天天综合| 呦视频在线一区二区三区| 欧美成在线视频| V一区无码内射国产| 久久伊人操| 99精品国产电影| 国产人免费人成免费视频| yjizz视频最新网站在线| 国产在线专区| 三上悠亚一区二区| 嫩草在线视频| 伊人久久婷婷五月综合97色| 在线观看国产精品一区| 国产免费看久久久| 国产福利小视频高清在线观看| 亚洲欧美综合在线观看| 免费看a级毛片| A级毛片无码久久精品免费| 一区二区欧美日韩高清免费| 成人国产精品网站在线看| 国产日韩av在线播放| 青青草原偷拍视频| 亚洲欧美国产视频| 国产精品网址在线观看你懂的| 青草精品视频| 又粗又硬又大又爽免费视频播放| 欧美日在线观看| 欧美日韩另类国产| 美女视频黄又黄又免费高清| 欧美高清国产| 久久这里只有精品66| 国产欧美日韩专区发布| 视频国产精品丝袜第一页| 国产精品视频a| 色网在线视频| 久久香蕉国产线看观看亚洲片| a级高清毛片| 中文字幕日韩丝袜一区| 99久久婷婷国产综合精| 日韩精品亚洲一区中文字幕| 国产一在线观看| 2019国产在线| 区国产精品搜索视频| 国产精品手机在线观看你懂的| 国产性生大片免费观看性欧美| 国产亚洲欧美日韩在线观看一区二区| 久久国产精品77777| 2020极品精品国产| 国产av色站网站| 国产精品美女免费视频大全 | 免费看一级毛片波多结衣| 国内自拍久第一页| 真人高潮娇喘嗯啊在线观看| 亚洲无码视频图片| 91精品久久久无码中文字幕vr| 精品国产女同疯狂摩擦2| 亚洲伊人天堂| 日本国产精品| 亚洲欧美不卡视频| 一本无码在线观看| 亚洲欧美日本国产专区一区| 亚洲婷婷丁香| 99re热精品视频中文字幕不卡| 国产白浆在线观看| 亚洲成a人片| 婷婷中文在线| 久久精品人人做人人爽97| 色偷偷av男人的天堂不卡| 欧美全免费aaaaaa特黄在线| 中文字幕在线一区二区在线| 中文字幕欧美成人免费| 四虎影视国产精品| 亚洲国产一成久久精品国产成人综合| 91久久偷偷做嫩草影院电| 国产区免费精品视频| 欧美综合区自拍亚洲综合绿色| 男人天堂亚洲天堂| 国产亚洲欧美日韩在线观看一区二区| 亚洲天堂高清| 一本色道久久88综合日韩精品|