【資料結構】前序遍歷與中序遍歷構造二叉樹
阿新 • • 發佈:2018-11-16
根據一棵樹的前序遍歷與中序遍歷構造二叉樹
具體程式碼如下:
struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; }; struct TreeNode* _buildTree(int* preorder, int* pindex, int* inorder,int inbegin,int inend) { if(inbegin>inend) { return NULL; } struct TreeNode* root=( struct TreeNode*)malloc(sizeof( struct TreeNode)); root->val=preorder[*pindex]; int rootindex=inbegin; for(rootindex=inbegin;rootindex<=inend;rootindex++) { if(inorder[rootindex]==root->val) break; } //構建左子樹 (*pindex)++; root->left= _buildTree(preorder,pindex,inorder,inbegin,rootindex-1); //構建右子樹 root->right=_buildTree(preorder,pindex,inorder,rootindex+1,inend); return root; } struct TreeNode* buildTree(int* preorder, int preorderSize, int* inorder, int inorderSize) { if(preorderSize==0&&inorderSize==0) return NULL; int index=0; struct TreeNode* root= _buildTree(preorder,&index,inorder,0,inorderSize-1); return root; }