LeetCode 572.另一棵树的子树 C写法
思路🧐:
可以用上判断两棵树是否相同的方法,root的每个结点都去与subroot进行该方法的比较,如果有一轮比较成功就表示root包含subroot。
代码🔎:
bool isSameTree(struct TreeNode* root, struct TreeNode* subRoot) { if(root == NULL && subRoot == NULL) return true; if(root == NULL || subRoot == NULL) return false; if(root->val != subRoot->val) return false; return isSameTree(root->left,subRoot->left) && isSameTree(root->right,subRoot->right); } bool isSubtree(struct TreeNode* root, struct TreeNode* subRoot){ if(root == NULL) //当结点为空则返回false return false; if(isSameTree(root,subRoot)) //进行相同比较 return true; //递归,有一次返回true则包含subroot return isSubtree(root->left,subRoot) || isSubtree(root->right,subRoot); }