代碼這樣
struct TreeNode* buildTree(int* preorder, int preorderSize, int* inorder, int inorderSize){
if(preorder==NULL||inorder==NULL)
return NULL;
if(preorderSize<=0||inorderSize<=0)
return NULL;
struct TreeNode*p;
int i;
for(i=0;i<inorderSize;i++)
{
if(preorder[0]==inorder[i])
{
p=(struct TreeNode*)malloc(sizeof(struct TreeNode));
p->val=preorder[0];
p->left=buildTree(*(preorder+1),i,*(inorder),i);
p->right=buildTree(*(preorder+i+1),preorderSize-i-1,*(inorder+i+1),inorderSize-i-1);
}
}
return p;
}
uj5u.com熱心網友回復:
具體邏輯沒仔細看,光是遞回就覺得不對 p->left=buildTree(*(preorder+1),i,*(inorder),i); //引數是個指標,你用解指標不就型別不匹配了嗎?*(preorder+1)不是(preorder+1)這個記憶體地址,而是preorder+1這個地址的記憶體資訊,該記憶體資訊可能是個非法的地址,導致遞回時引數不對轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/94474.html
標籤:其它技術問題
上一篇:問一下用C語言編譯簡單的酒店管理系統怎么做(幫寫一下用重謝呀)下面的題是英文的,有意者加一下微信好友:TX00ST
下一篇:C語言 順序結構線性表的實作
