国产一区二区精品-国产一区二区精品久-国产一区二区精品久久-国产一区二区精品久久91-免费毛片播放-免费毛片基地

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > 為什么二叉樹的根結點常常是指向指針的指針?

為什么二叉樹的根結點常常是指向指針的指針?

來源:千鋒教育
發布人:xqq
時間: 2023-10-11 04:38:21 1696970301

一、為什么二叉樹的根結點常常是指向指針的指針

因為在創造一顆樹時,在申請根結點空間時,地址可能會發生變化,而這種變化是無法判斷的,是系統自動發生的,單個指針就無法找到變化后的地址,所以 ,用指針的指針,找到變化后的地址。當然 如果你在創造一顆樹前,就已經初始化分配了根結點的空間,那就不用指針的指針,直接用一個指針就行了。

它是一種C語言式的標準做法。

節點需要兩重指針,一重是節點本身動態更改數據的需要,另一重是分配與操作堆內存數據的需要。

至于是不是一定要做成指針的指針形式,取決于節點數據是直接手動管理內存,這種可以指針的指針,效率較高。還是封裝為某個結構的內部成員變量,開銷略大一點,就只是指針的形式,好控制,使用方便。用智能指針的話,實際也是屬于后者。

二叉樹的建立中:

t=(BiTtree*)malloc(sizeof(BiTtree)); t->data=d; CreateBiTree(t->left,x); CreateBiTree(t->right,x);;

其中t=(tree*)malloc(sizeof(tree));

改變了指針的指向所以指針的指針,或者指針的引用

void CreateBiTree(BiTtree *&t,char x)

1

附上代碼

#include

using namespace std;

struct BiTtree{

??? char data;

??? BiTtree *left,*right;

};

void CreateBiTree(BiTtree *&t,char x){

//在函數調用時用指針或者引用做參數,表示把變量的地址傳遞給子函數,

//但是子函數只能修改指針所指變量的值,并不能修改指針的指向。

//如果想要修改指針的指向,就要用指針的指針,或者指針的引用。

??? char d;

??? scanf(“%c”,&d);

??? if(d==x){

?????? t=NULL;

??? }

??? else{

?????? t=(BiTtree*)malloc(sizeof(BiTtree));

?????? t->data=d;

?????? CreateBiTree(t->left,x);

?????? CreateBiTree(t->right,x);

??? }

}

void printtree(BiTtree *t){

??? if(t){

?????? printf(“%c “, t->data);

?????? printtree(t->left);

?????? printtree(t->right);

??? }

}

int main(){

??? BiTtree *t;

??? CreateBiTree(t,’#’);

??? printtree(t);

??? return 0;

}

延伸閱讀:

二、樹

樹(Tree)是n(n>=0)個結點的有限集。n=0時稱為空樹。在任意一顆非空樹中:

有且僅有一個特定的稱為根(Root)的結點;當n>1時,其余結點可分為m(m>0)個互不相交的有限集T1、T2、…… 為什么二叉樹的根結點常常是指向指針的指針Tn,其中每一個集合本身又是一棵樹,并且稱為根的子樹。

此外,樹的定義還需要強調以下兩點:

n>0時根結點是少數的,不可能存在多個根結點,數據結構中的樹只能有一個根結點。m>0時,子樹的個數沒有限制,但它們一定是互不相交的。
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT