成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

二叉樹的定義以及存儲結構

存儲 存儲軟件
二叉樹是n個結點的有限集合,該集合或者為空集,或者由一個根結點和兩顆互不相交的、分別稱為根結點的左子樹和右子樹的二叉樹組成。

 二叉樹的定義:

二叉樹是n個結點的有限集合,該集合或者為空集,或者由一個根結點和兩顆互不相交的、分別稱為根結點的左子樹和右子樹的二叉樹組成。

二叉樹具有五種基本的形態:

  1. 空二叉樹。
  2. 只有一個根結點。
  3. 根結點只有左子樹。
  4. 根結點只有右子樹。

特殊的二叉樹

  1. 斜樹。
  2. 滿二叉樹。
  3. 完全二叉樹。

[[222529]]

二叉樹的順序存儲結構:

二叉樹的順序存儲結構就是用一維數組存儲二叉樹中的結點,并且結點的存儲位置,也就是數組的下標要能體現結點之間的邏輯關系,比如雙親與孩子的關系,左右兄弟的關系。

使用順序存儲結構表現二叉樹的時候,在其線性結構中,會存在一些空結點,但是其會占據一定的內存空間,會造成存儲空間的浪費;所以,順序存儲結構一般只用于完全二叉樹。

二叉樹的鏈式存儲結構:

由于二叉樹的每個結點最多有兩個孩子,所以為每個結點設計一個數據域和兩個指針域,通常將其稱之為二叉鏈表。

二叉鏈表的結點結構定義代碼:

  1. typedef char TElemType; 
  2. typedef struct BinaryTreeNode{ 
  3.     TElemType data;     
  4.     //lchild指向左結點的指針 
  5.     //rchild指向右結點的指針 
  6.     struct BinaryTreeNode *lchild,*rchild; 
  7. }BinaryTreeNode,*BinaryTree; 

二叉樹的遍歷

二叉樹的遍歷是指從根結點出發,按照某種次序一次訪問二叉樹中所有結點,使得每個結點被訪問一次且僅被訪問一次。

二叉樹的遍歷方法:

  1. 前序遍歷
  2. 中序遍歷
  3. 后序遍歷

1.首先創建一棵二叉樹

構建二叉樹,向結點的數據域中添加字符。

  1. void CreateBinaryTree(BinaryTree *T){ 
  2.     TElemType ch;     
  3.     cin>>ch;     
  4.     if (ch=='$'){ 
  5.         *T=NULL
  6.     }else
  7.         *T=new BinaryTreeNode;         
  8.         if (!*T)return
  9.         (*T)->data=ch; 
  10.         CreateBinaryTree(&(*T)->lchild); 
  11.         CreateBinaryTree(&(*T)->rchild); 
  12.     } 

2.二叉樹的前序遍歷算法

  1. void PreOrderTraverse(BinaryTree T){     
  2. if (T==NULL){         
  3.     cout<<"#"<<"  ";         
  4.         return
  5.     }     
  6.     cout<<T->data<<"  "
  7.     PreOrderTraverse(T->lchild); 
  8.     PreOrderTraverse(T->rchild); 

3.二叉樹的中序遍歷算法

  1. void InOderTraverse(BinaryTree T){     
  2. if(T!=NULL){         
  3.         cout<<"#"<<"  ";         
  4.         return
  5.     } 
  6.     InOderTraverse(T->lchild);     
  7.     cout<<T->data<<"  "
  8.     InOrderTraverse(T->rchild); 

4.二叉樹的后序遍歷算法

  1. void PostOrderTraverse(BinaryTree T){     
  2.     if (T->NULL){         
  3.         cout<<"#"<<"  ";         
  4.         return
  5.     } 
  6.     PostOrderTraverse(T->lchild); 
  7.     PostOrderTraverse(T->rchild);     
  8.     cout<<T->data<<"  "

前序遍歷、中序遍歷和后序遍歷算法的核心算法大致相同,都是利用了函數遞歸的原理。這里順帶補充一下關于函數遞歸調用的原理:

裴波那契數列的實現來講解函數的遞歸調用,假設存在這樣一個函數:

使用遞歸實現裴波那契數列代碼如下:

  1. int Fibonacci(int i){     
  2.     if (i<2){         
  3.         return i==0?0:1; 
  4.     }     
  5.         return Fibonacci(i-1)+Fibonacci(i-2); 

通過二叉樹的結構來分析遞歸調用的執行過程:(摘自大話數據結構 P103頁)

主函數中的測試代碼如下:

  1. //測試代碼int main() 
  2.     BinaryTree tree = new BinaryTreeNode;     
  3.     cout << "構建一顆由字符構成的二叉樹,#代表空" << endl; 
  4.     CreateBinaryTree(&tree);     
  5.     cout << "二叉樹的前序遍歷輸出" << endl; 
  6.     PreOderTraverse(tree);     
  7.     cout << endl;     
  8.     cout << "二叉樹的中序遍歷輸出" << endl; 
  9.     InOderTraverse(tree);     
  10.     cout << endl;     
  11.     cout << "二叉樹的后序遍歷輸出" << endl; 
  12.     PostOderTraverse(tree);     
  13.     cout << endl;     
  14.     return 0; 

輸出如下圖所示:

假設輸入這樣一個二叉樹數據結構:

代表當前節點的數據域為空

ABD#J##EK###CFL###G##

責任編輯:武曉燕 來源: 碼碼小蟲
相關推薦

2020-04-27 07:05:58

二叉樹左子樹右子樹

2021-04-19 07:47:42

數據結構二叉樹Tree

2021-04-20 08:37:14

數據結構二叉樹

2020-09-23 18:25:40

算法二叉樹多叉樹

2021-04-28 20:12:27

數據結構創建

2013-01-30 10:34:02

數據結構

2022-10-26 23:58:02

二叉樹數組算法

2013-07-15 16:35:55

二叉樹迭代器

2021-03-17 08:19:22

二叉樹LeetCode

2021-08-27 11:36:44

二叉樹回溯節點

2021-09-29 10:19:00

算法平衡二叉樹

2020-11-02 09:15:47

算法與數據結構

2021-09-15 07:56:32

二叉樹層次遍歷

2021-10-12 09:25:11

二叉樹樹形結構

2021-05-06 17:46:30

二叉樹數據結構

2021-03-22 08:23:29

LeetCode二叉樹節點

2023-05-08 15:57:16

二叉樹數據結構

2021-01-07 08:12:47

數據結構二叉樹

2019-08-22 09:22:44

數據結構二叉搜索樹

2021-09-28 06:28:51

二叉樹公共祖先
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美一级艳情片免费观看 | 久久精品国产v日韩v亚洲 | 久草久草久草 | 国产真实乱对白精彩久久小说 | 亚洲精品视频播放 | av在线免费观看网站 | 一区二区日韩精品 | 精品在线一区二区 | 久久久久久久久久久久91 | 精品乱码一区二区三四区视频 | 韩日一区 | 免费看黄视频网站 | 男人天堂视频在线观看 | 天天爽夜夜操 | 欧美国产精品一区二区三区 | 国产一级片在线观看视频 | 天堂在线网 | 中文字幕视频在线 | 天堂一区二区三区 | 成人午夜免费福利视频 | 国产福利91精品 | 污视频在线免费观看 | 一区二区在线 | 成人亚洲网站 | 91资源在线| 欧美视频精品 | www.日韩在线 | 欧美天堂一区 | av手机在线免费观看 | 精品一区二区三区在线视频 | 黄色一级视频 | 欧美黄色片| 羞羞的视频在线 | 99精品久久 | 久久com| 深夜爽视频 | 国产午夜av片 | 天天色综| 这里只有精品99re | 欧美精品 在线观看 | 欧美精品一区二区三区四区 在线 |