讨论/面试考题/另一颗树的子树问题;/
另一颗树的子树问题;
bool equal(struct TreeNode *root ,struct TreeNode *t)
{
              printf("+");
             if(root==NULL)    // 遍历该子树;
             return false;
             if(t!=NULL) {
                 if(root->val == t->val)
                     return     true;   
                 else       
                  return false ;
                 
             }
             else     
                       return false;
                  
                  return equal(root->left, t->left) && equal(root->right ,t->right);     // 左右全相等时;
}
// 遍历每一个节点;
bool isSubtree(struct TreeNode* root, struct TreeNode* t){
          int sum=0 ,sum1=0 ,sum2=0;
          if(root==NULL)
          return false;         
          sum=equal(root,t);
          printf("%d",sum);
          sum1=isSubtree(root->left ,t);
          sum2=isSubtree(root->right ,t);
          return     sum|| sum1 ||sum2;  
}  

|另一颗树的子树| 572|简单| ;
当使用
[3,4,5,1,2,null,null,0]
[4,1,2]
用例时就会返回true ;
正确为 false ;

我的思路是: 双重递归;遍历s 树的每个节点将每个节点作为根进行dfs 遍历 ,
树 t 和树 s 的遍历 方式相同 , 在通过 t ,s 节点中的所有结点当 t , s 均不为零且 t->val == s->val 返回 true ,其余返回 false , 想问问上面那有问题 ?

展开讨论
共 0 个讨论
无讨论