日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

树与二叉树(c/c++)

發布時間:2025/6/17 c/c++ 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 树与二叉树(c/c++) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 樹的特點:

結點的度:該結點擁有非空子樹的個數。樹的度:所有結點的度的最大值。層次:第一層為樹的根結點所在層,第二層為根的兒子所在層...。樹的高度(深度):樹的最大層次。結點的高度:從最深的葉子結點往上數起。結點的深度:從根結點數起

  • 二叉樹:

二叉樹是遞歸定義的,其結點有左右孩子之分。

二叉樹有順序存儲和鏈式存儲兩種存儲結構,其中鏈式存儲最為常用,順序存儲結構適合用于完全二叉樹的存儲,將結點存儲在數組中,根據下面樹的性質4通過數組下標進行訪問,又如之前的堆排序中采用的就是完全二叉樹的順序存儲結構。

二叉樹的五種形態:1,空二叉樹? 2,只有一個根結點的二叉樹? 3,只有左子樹的二叉樹 ? 4 ? 只有右子樹的二叉樹 ?? 5? 完全二叉樹

二叉樹鏈式存儲結點定義如下:

typedef struct btNode {char data;//結點中的信息struct btNode* lc;//左孩子結點struct btNode* rc;//右孩子結點 }btNode;
  • 樹的性質:

1,總結點數=總分支數+1。可推在二叉樹中,n0+n1+n2=2*n2+n1+1 ? 得:n0=n2+1

2,n個結點的樹含有2n個指針,其中非空指針數位n-1,空指針數位n+1

3,二叉樹中第i層最多有2^(k-1)個結點,高(深)度為k的二叉樹中最多有2^k-1個結點

4,n個結點的完全二叉樹中,按從上至下,從左到右對數編號,根結點編號為1,則對于編號為i的結點:若i不等于1,那其雙親編號為i/2(向下取整);若2*i小于等于n,那其左孩子編號為2i;若2*i+1小于等于n,那其右孩子編號為2i+1。根結點編號為0的話:若i不等于0,那其雙親結點為i/2-1(向上取整);在其左右孩子存在的條件下,左孩子為2i+1,右孩子為2i+2

5,n個結點可以構成h(n)種不同的二叉樹,h(n)=C(2n,n)/(n+1),h(n)為卡特蘭數

6,n個結點完全二叉樹的高度為logn+1(logn向下取整)或log(n+1)(向上取整)

  • 樹的三種存儲結構:

1,雙親表示法(樹編號從1開始,根結點的雙親結點(父結點)為-1)

typedef struct {char data;//結點中的信息int parent;//父結點 }node;

2,孩子表示法(類似于圖的鄰接表表示法)

此處無代碼,無圖,讀者可自行想象。(有點懶...)

3,孩子兄弟表示法(用于樹與二叉樹的轉換,口訣為左孩子,右兄弟)

typedef struct node {char data;//結點中的信息struct node* son;//孩子結點struct node* brother;//孩子的兄弟結點 }node;

樹的先序遍歷等同于其轉換二叉樹的先序遍歷;樹的后序遍歷等同于其轉換二叉樹的中序遍歷。森林的先序遍歷等同于其轉換二叉樹的先序遍歷;樹的中序遍歷等同于其轉換二叉樹的中序遍歷。

?

?

?

?

?

?

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的树与二叉树(c/c++)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。