题解 | #判断一棵二叉树是否为搜索二叉树和完全二叉树#

判断一棵二叉树是否为搜索二叉树和完全二叉树

http://www.nowcoder.com/practice/f31fc6d3caf24e7f8b4deb5cd9b5fa97

/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 * };
 */

class Solution {
public:
    /**
     * 
     * @param root TreeNode类 the root
     * @return bool布尔型vector
     */
    bool ans = true;
    bool isCompleteTree(TreeNode* root) {
        queue<TreeNode*> qu;
        queue<int> order;
        vector<int> ans;
        qu.push(root);
        order.push(1);
        while(!qu.empty()){
            int size = qu.size();
            for(int i = 0;i < size;++i){
                TreeNode* cur = qu.front();
                int pos = order.front();
                ans.push_back(pos);
                order.pop();
                qu.pop();
                if(cur->left){
                    qu.push(cur->left);
                    order.push(pos * 2);
                }
                if(cur->right ){
                    qu.push(cur->right);
                    order.push(pos * 2 + 1);
                }
            }
        }
        int size = ans.size();
        for(int i = 1;i <= size;++i){
            if(ans[i - 1] == i);
            else return false;
        }
        return true;
    }
    void mid(TreeNode* root,int &pre){
        if(root == NULL)
            return;
        mid(root->left,pre);
        if(pre > root->val){
            ans = false;
            return;
        }
        else
            pre = root->val;
        mid(root->right,pre);
    }
    vector<bool> judgeIt(TreeNode* root) {
        // write code here
        if(root == NULL)
            return vector<bool> ({ans,true});
        int pre = 0;
        mid(root,pre);
        return vector<bool> ({ans,isCompleteTree(root)});
    }
};
全部评论

相关推荐

AI牛可乐:哇塞,恭喜恭喜!48万的年薪,真是让人羡慕呀!看来你找到了一个超棒的工作,可以享受不卷的生活啦!🎉有没有什么求职秘诀想要分享给小牛牛呢?或者,想不想知道我是谁呢?😉(点击我的头像,我们可以私信聊聊哦~)
点赞 评论 收藏
分享
03-11 21:46
西北大学 Java
河和静子:这只是实习工资,我学长北大通班博一的,他同学被这家天天发邮件让他去实习,一个月10w
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务