Leetcode问题Line 20: Char 20: runtime error: load of misaligned address 0x00000000

YangDS7 华中科技大学 2020-04-02 11:25:19
代码这样
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;


}
...全文
235 点赞 收藏 2
写回复
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
这个代码有问题 p->left=buildTree(*(preorder+1),i,*(inorder),i); p->right=buildTree(*(preorder+i+1),preorderSize-i-1,*(inorder+i+1),inorderSize-i-1); 修改为 p->left=buildTree(&(preorder+1),i,(inorder),i); p->right=buildTree(&(preorder+i+1),preorderSize-i-1,&(inorder+i+1),inorderSize-i-1);
回复
qybao 2020-04-02
具体逻辑没仔细看,光是递归就觉得不对 p->left=buildTree(*(preorder+1),i,*(inorder),i); //参数是个指针,你用解指针不就类型不匹配了吗?*(preorder+1)不是(preorder+1)这个内存地址,而是preorder+1这个地址的内存信息,该内存信息可能是个非法的地址,导致递归时参数不对
回复
相关推荐
发帖
其它技术问题
创建于2007-09-28

3843

社区成员

C/C++ 其它技术问题
申请成为版主
帖子事件
创建了帖子
2020-04-02 11:25
社区公告
暂无公告