合并两个树。。。一开始写的时候总是错误 ,还是思考了10来分钟问什么错了,,,还是好久没碰书了,来一份错误的代码先
TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) {
TreeNode *t = new TreeNode(0);
if (t1 == t2 && t1 == NULL)
return NULL;
else if(t2 == NULL)
t -> val = t1 -> val;
else if(t1 == NULL)
t -> val = t2 -> val;
else
t -> val = t2 -> val + t1-> val;
t -> left = mergeTrees(t1 -> left,t2 -> left);
t -> right = mergeTrees(t1 -> right,t2 -> right);
return t;
}
对应的错误就是。。。member access within null pointer of type ‘struct TreeNode’ 一开始就在找 哪里会有null哟 后面才想到, t -> left = mergeTrees(t1 -> left,t2 -> left);
t -> right = mergeTrees(t1 -> right,t2 -> right); t1和t2可能是null然后还指向了一个。。。噗 愚蠢的我,这不瞎整么。。。
前方代码t1,t2有一个为null,直接return 另一个就好了咯 蠢
TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) {
TreeNode *t = new TreeNode(0);
if (t1 == t2 && t1 == NULL)
return NULL;
else if(t2 == NULL)
return t1;
else if(t1 == NULL)
return t2;
else
t -> val = t2 -> val + t1-> val;
t -> left = mergeTrees(t1 -> left,t2 -> left);
t -> right = mergeTrees(t1 -> right,t2 -> right);
return t;
}