這些函數會給出相同的輸出,並且它們都是正確的,但是我想知道哪些以編程方式更合適?是否應該指定退貨條件?
代碼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'比較:) –