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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

层序创建二叉树

發布時間:2025/4/16 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 层序创建二叉树 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

創建過程:

(1) 輸入第一個數據:

?若為0,表示此樹為空,將空指針賦給根指針,樹構造完畢;

?若不為0,動態分配一個節點單元,并存入數據,同時將該節點地址放入隊列。

(2) 若節點不為空,從隊列中取出一個節點地址,并建立該節點的左右孩子:

?從輸入序列中讀入下一數據;

?若讀入的數據為0,將出隊節點的左孩子指針置空;否則,分配一個新的節點單元,存入所讀值,并將其置為出隊節點的左孩子,同時將此孩子地址入隊;

?接著再從輸入序列中讀入下一個數據;

?若讀入的數據為0,將出隊節點的右孩子指針置空;否則,分配一個新的節點單元,存入所讀值,并將其置為出隊節點的右孩子,同時將此孩子地址入隊;

(3) 重復第(2)步過程,直到隊列為空,再無節點出隊,構造過程到此結束。

typedef int ElementType; #define NoInfo 0 //用0表示沒有節點//層序創建二叉樹 BinTree CreateBinTree() {ElementType Data;BinTree BT, T;queue<TNode *> Q;//創建第1個節點,即根節點cin >> Data;if(Data != NoInfo){//分配節點單元,并將節點地址入隊BT = (BinTree)malloc(sizeof(struct TNode));BT->Data = Data;BT->Left = BT->Right = NULL;Q.push(BT);}elsereturn NULL; //若第一個數據就是0,返回空樹while(!Q.empty()){T = Q.front(); //從隊列中取出一節點地址 Q.pop();cin >> Data; //讀入T的左孩子if(Data == NoInfo)T->Left = NULL;else{//分配新節點,作為出隊節點的左孩子,并將該新節點入隊T->Left = (BinTree)malloc(sizeof(struct TNode));T->Left->Data = Data;T->Left->Left = T->Left->Right = NULL;Q.push(T->Left);}cin >> Data; //讀入T的右孩子if(Data == NoInfo)T->Right = NULL;else{//分配新節點,作為出隊節點的右孩子,并將該新節點入隊T->Right = (BinTree)malloc(sizeof(struct TNode));T->Right->Data = Data;T->Right->Left = T->Right->Right = NULL;Q.push(T->Right);}} //結束whilereturn BT; //返回二叉樹的根節點 }

?

轉載于:https://www.cnblogs.com/FengZeng666/p/9729818.html

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

總結

以上是生活随笔為你收集整理的层序创建二叉树的全部內容,希望文章能夠幫你解決所遇到的問題。

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