【发布时间】:2020-03-21 06:56:04
【问题描述】:
这是我在穿过一棵树时想到的 我写了这个:
if( node==NULL || node->left==NULL && node->left==NULL) return 1;
并且给定的解决方案有:
if(!node || !node->left && !node->right) return 1;
这两者之间有区别吗?我知道这可能很愚蠢,但现在只需点击一下。
关于这个问题 https://practice.geeksforgeeks.org/problems/children-sum-parent/1/?track=PC-W6-T&batchId=154
这段代码出错
int isSumProperty(Node *node){
int l=0,r=0;
if( node==NULL || node->left==NULL && node->left==NULL) return 1;
if(node->left) l=node->left->data; else l=0;
if(node->right) r=node->right->data; else r=0;
return ( node->data == l+r && isSumProperty(node->left) && isSumProperty(node->right) );
}
但是用另一个语句替换第一个 if 语句,你们能解释一下吗?
测试用例附带错误: 2 N 1 N 2 N 1 N 1 N 2 N 1
【问题讨论】:
-
提示:在 C++ 中,您实际上应该使用
nullptr。 -
完全没有功能差异。
-
好的,但是这些有区别吗? ..我会考虑你的观点,这也是一个朋友告诉我的。