这些函数会给出相同的输出,并且它们都是正确的,但是我想知道哪些以编程方式更合适?是否应该指定退货条件?
代码1:
void inorder(node *t){
if(t==NULL)
return;
else{
inorder(t->left);
cout<<t->data<<" ";
inorder(t->right);
return;
}
}
代码2:
void inorder(node *t){
if(t){
inorder(t->left);
cout<<t->data<<" ";
inorder(t->right);
}
}
这里节点是二进制树的一个节点,其具有结构:
struct node{
int data;
node *left;
node *right;
};
第二个比第一个好。你可以通过删除'else {'和匹配的'}'和第二个'return'来改进第一个。那也是可以接受的。 –
如果你必须做一个明确的比较,你应该与'nullptr'比较:) –