根據先序遍歷的結果建立一棵樹【D.S】
阿新 • • 發佈:2019-01-08
根據先序遍歷的結果建立一棵樹
根據先序遍歷的結果還原一棵樹 則該樹是不確定的
例如 先序遍歷的結果ABC 有兩種形式
如果要還原一棵樹,除了要知道先序遍歷的結果,還需要知道樹的位置。
如果用#表示空樹,
則左邊的二叉樹為 AB##C##
而右邊的二叉樹為 ABC####
已只先序遍歷的結果,在建立樹時,先建立根節點
再遞迴建立左子樹,再遞迴建立右子樹。
//arr:儲存先序遍歷序列的字串
//size: 字串的長度
//index: 位置下標
//null_flag:為空樹的標誌
TreeNode* _CreateTree(TreeType arr[],size_t size, size_t* index , char null_flag)
60 {
61 if(arr==NULL||index==NULL||size<0)
62 {
63 //非法輸入
64 return NULL;
65 }
66 if (arr[*index]==null_flag)
67 {
68 //空子樹
69 return NULL;
70 }
71 //建立根結點
72 TreeNode* root=CreateNode(arr[*index]);
73 (*index)++;
74 //遞迴建立左子樹
75 root->lchild=_TreeCreate(arr,size, index,null_flag);
76 (*index)++
77 //遞迴建立右子樹
78 root->rchild=_TreeCreate(arr,size,index ,null_flag);
79 return root;
80 }
81
81
83 TreeNode* CreateTree(TreeType arr[],size_t size, char null_flag)
84 {
85 int index=0;
86 TreeNode* root=_TreeCreate(arr,size,&index,null_flag);
87 return root ;
88 }