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;


}
...全文
1368 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaozi1220 2021-03-10
  • 打赏
  • 举报
回复
这个代码有问题 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这个地址的内存信息,该内存信息可能是个非法的地址,导致递归时参数不对

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧