#c
Вопрос:
void printCodes(struct MinHeapNode* root, string str)
{
if (!root)
return;
if (root->data != '
Комментарии:
1. Как ты думаешь, что это делает?
2. В C
struct
здесь нет необходимости.3. Это сокращенное
root == 0
название . Посколькуroot
является указателем, а константа нулевого указателя-это константа, которая сравнивается равной нулю, это также сокращение дляroot == NULL
или (введено C 11 и считается предпочтительным)root == nullptr
.4. Это предварительное условие. Если корень есть
nullptr
, функция просто вернется и ничего не сделает.5. @Raildex Также называется "условием охраны" или "оговоркой охраны". Не уверен, что в C для этого есть льготный термин.
Ответ №1:
если(корень) эквивалентен if(root != nullptr)
, так if(!root)
представляйте if(root==nullptr)
.
[!!= -> ==]
A precondition for almost every recursive function.
Поэтому, когда вы получаете обратно nullptr
корень, это означает, что функция дошла до конца данного дерева.
)
cout << root->data << ": " << str << "n";
printCodes(root->left, str "0");
printCodes(root->right, str "1");
}
Комментарии:
1. Как ты думаешь, что это делает?
2. В C
struct
здесь нет необходимости.3. Это сокращенное
root == 0
название . Посколькуroot
является указателем, а константа нулевого указателя-это константа, которая сравнивается равной нулю, это также сокращение дляroot == NULL
или (введено C 11 и считается предпочтительным)root == nullptr
.4. Это предварительное условие. Если корень есть
nullptr
, функция просто вернется и ничего не сделает.5. @Raildex Также называется «условием охраны» или «оговоркой охраны». Не уверен, что в C для этого есть льготный термин.
Ответ №1:
если(корень) эквивалентен if(root != nullptr)
, так if(!root)
представляйте if(root==nullptr)
.
[!!= -> ==]
Поэтому, когда вы получаете обратно nullptr
корень, это означает, что функция дошла до конца данного дерева.