leetcode第1398题 判断给定的序列是否是从根到叶的路径
因为这题属于leetcode上面的会员题,而我的会员马上过期了,所以在此记录一下解法(具体解法看注释)
bool isValid(struct TreeNode* root,int*arr,int arrSize,int start){
//如果树根为0,则返回false
if(root==NULL) return false;
//如果此时所在的位置是大于等于(不能等于是因为题干要求必须树根到树叶而等于如果成立的话不一定是树根到树叶)数组的值,返回flase
if(strat>=arrSize) return false;
//树根的值不等于数组的首元素,返回false
if(root->val != arr[start]){
return false;
}
//左子树与右子树同时为NULL,说明走到了树叶,检查此时的位置是否走到了数组的最后一个数值,是返回true,否返回false
if(root->left==NULL && root->right==NULL){
return start+1 == arrSize;
}
//如果没有从树根走到树叶就重新来过
return isValid(root->left,arr,arrSize,start+1) || isValid(root->right,arr,arrSize,start+1)
}
bool isValidSequence(struct TreeNode* root,int*arr,int arrSize){
return isValid(root,arr,arrSize,0);
}