[LeetCode]572. Subtree of Another Tree

来源:互联网 发布:数控外圆磨床怎么编程 编辑:程序博客网 时间:2024/06/05 05:43

[LeetCode]572. Subtree of Another Tree

题目描述

这里写图片描述

思路

对树s的每一个节点,都判断是否与树t是同一棵树
判断同一棵树使用深搜即可

代码

#include <iostream>using namespace std;struct TreeNode {    int val;    TreeNode* left;    TreeNode* right;    TreeNode(int x) : val(x), left(NULL), right(NULL) {}};class Solution {public:    bool isSubtree(TreeNode* s, TreeNode* t) {        if (s == NULL)            return t == NULL;        return isSameNode(s, t) || isSubtree(s->left, t) || isSubtree(s->right, t);    }    bool isSameNode(TreeNode* s, TreeNode* t) {        if (s == NULL)            return t == NULL;        if (t == NULL)            return false;        return s->val == t->val && isSameNode(s->left, t->left) && isSameNode(s->right, t->right);    }};int main() {    TreeNode *n1 = new TreeNode(3);    TreeNode *n2 = new TreeNode(4);    TreeNode *n3 = new TreeNode(5);    TreeNode *n4 = new TreeNode(1);    TreeNode *n5 = new TreeNode(2);    TreeNode *n6 = new TreeNode(0);    n1->left = n2, n1->right = n3;    n2->left = n4, n2->right = n5;    n5->left = n6;    TreeNode *s1 = new TreeNode(4);    TreeNode *s2 = new TreeNode(1);    TreeNode *s3 = new TreeNode(2);    s1->left = s2, s1->right = s3;    Solution s;    cout << s.isSubtree(n1, s1) << endl;    system("pause");    return 0;}
0 0
原创粉丝点击