题解 | #二叉搜索树#

二叉搜索树

http://www.nowcoder.com/practice/3d6dd9a58d5246f29f71683346bb8f1b

核心代码:judgeSameBinaryTree函数

#include <iostream>
#include <string>
#include <vector>
#include <stdlib.h>
using namespace std;

struct TreeNode {
    int val;
    TreeNode* left;
    TreeNode* right;
    TreeNode(int _val) : val(_val), left(NULL), right(NULL) { }
};

TreeNode* createBinaryTree(TreeNode* root, int data) {
    if (root == NULL) {
        TreeNode* node = new TreeNode(data);
        return node;
    }
    if (data < root->val) {
        root->left = createBinaryTree(root->left, data);
    }
    else {
        root->right = createBinaryTree(root->right, data);
    }
    return root;
}

bool judgeSameBiTree(TreeNode* root1, TreeNode* root2) {
    if (!root1 && !root2) return true;
    if (root1 && root2 && root1->val == root2->val) {
        return judgeSameBiTree(root1->left, root2->left) && judgeSameBiTree(root1->right, root2->right);
    }
    else {
        return false;
    }
}

int main() {
    int N;
    cin >> N;
    string s1;
    cin >> s1;
    TreeNode* root = NULL;
    for(int i = 0; i < s1.size(); i++) {
        root = createBinaryTree(root, s1[i]-'0');
    }
    TreeNode* root2 = NULL;
    while (N--) {
        string s2;
        cin >> s2;
        for(int i = 0; i < s2.size(); i++) {
            root2 = createBinaryTree(root2, s2[i]-'0');
        }
        bool flag = judgeSameBiTree(root, root2);
        if (flag == true) cout << "YES" << endl;
        else cout << "NO" << endl;
        root2 = NULL;
    }
    return 0;
}


全部评论

相关推荐

头像 会员标识
昨天 17:08
已编辑
牛客_产品运营部_私域运营
腾讯 普通offer 24k~26k * 15,年包在36w~39w左右。
点赞 评论 收藏
分享
菜菜咪:1. 可以使用简历网站的模版,美观度会更好一点 2. 邮箱可以重新申请一个,或者用qq邮箱的别名,部分hr可能会不喜欢数字邮箱 3. 项目经历最好分点描述,类似的项目很多,可以参考一下别人怎么写的 4. 自我评价可加可不加,技术岗更看重技术。最后,加油,优秀士兵
点赞 评论 收藏
分享
拒绝无效加班的小师弟很中意你:求职意向没有,年龄、课程冗余信息可以删掉,需要提升项目经历。排版需要修改。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务