構造二叉樹——順序存儲結構轉化為鏈式存儲結構


  • 問題描述:設有n個節點的二叉樹采用順序存儲結構存儲在數組BT中,編寫函數由該數組創建的二叉鏈式存儲結構
  • 思路:假定BT數組中順序存儲順序為層次遍歷的順序

BT數組中的下標 與 二叉樹節點按層次遍歷編號 如圖:

即得到節點的值等於BT[K-1],k為節點編號,以及如下圖根節點與左右子樹的編號規律

則可以利用遞歸

遞歸一般分為三部分:

1.遞歸出口以及參數的容錯處理

2.遞歸邏輯(在每一次調用做的事情)

3.遞歸調用

代碼:

 1 #include<iostream>
 2 #include<string>
 3 char BT[] = "ABCD#EF";
 4 int n = strlen(BT);
 5 using namespace std;
 6 typedef struct TNode{
 7     char data;
 8     TNode *lchild, *rchild;
 9     TNode(char d):data(d),lchild(NULL),rchild(NULL){}//構造函數
10     ~TNode(){delete lchild;delete rchild;}
11 };
12 void Create(TNode **t,int k)
13 {
14     if (k>n||BT[k-1] == '#')//缺失一個=號,則t=NULL
15     {
16         *t = NULL;
17     }//遞歸出口
18     else
19     {
20         *t = new TNode(BT[k-1]);//遞歸邏輯
21         Create(&(*t)->lchild,2*k);//遞歸調用
22         Create(&(*t)->rchild,2*k+1);
23     }
24 
25 }
26 int main()
27 {
28        TNode *t;
29        Create(&t,1);
30 31 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM