面试题 04.10. 检查子树

题目:

 

 

解答:

通过中序遍历进行比较。

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    bool checkSubTree(TreeNode* t1, TreeNode* t2) 
    {
        string s1="",s2="";
        inorder(t1,s1);//对t1进行中序遍历并记录节点值
        inorder(t2,s2);//对t2进行中序遍历并记录节点值

        if(s1.find(s2)==-1) return false;

        return true;
    }

    void inorder(TreeNode* t,string& s)
    {
        if(t==NULL) return;
        inorder(t->left,s);
        s+=to_string(t->val);
        inorder(t->right,s);
    }
};

 

posted @ 2020-05-09 23:21  梦醒潇湘  阅读(178)  评论(0)    收藏  举报