1. 程式人生 > >根據先序遍歷的結果建立一棵樹【D.S】

根據先序遍歷的結果建立一棵樹【D.S】

根據先序遍歷的結果建立一棵樹

根據先序遍歷的結果還原一棵樹 則該樹是不確定的
例如 先序遍歷的結果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 }