您的位置:首页 > 其它

leetcode : subtree of another tree

2017-08-29 23:14 357 查看
题:给出两棵二叉树,判断一颗是不是另一颗的子树

代码:

/**
* Definition for a binary tree node.
* struct TreeNode {
*     int val;
*     TreeNode *left;
*     TreeNode *right;
*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
#include <sstream>
using namespace std;
class Solution {
private:
stringstream ss1,ss2;
void preorderedTree(TreeNode* node,stringstream& s){
if(node==nullptr)s<<" n";
else{
s<<' '<<(node->val);
preorderedTree(node->left,s);
preorderedTree(node->right,s);
}
}
public:
bool isSubtree(TreeNode* s, TreeNode* t) {
preorderedTree(s,ss1);
ss1<<' e';
preorderedTree(t,ss2);
return ss1.str().find(ss2.str())!=ss1.str().npos;
}
};


注意点:
①每次往stringsream里塞入结点value时要用空格隔开,否则若输入[12],[2]会返回true。
②null结点也要输入stringstream,否则若输入[4,1,2,0],[4,1,2]会返回true。
③string.find(str)!=string.npos才能判定str是否在string中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: