分两次dfs

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

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

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

class Solution {
public:
    /**
     * 
     * @param root TreeNode类 the root
     * @return bool布尔型vector
     */
    vector<bool> judgeIt(TreeNode* root) {
        // write code here
        return {isSearchTree(root,INT_MIN,INT_MAX),isCompletedTree(root)};
    }
    
    bool isCompletedTree(TreeNode* root)
    {
        if(root == nullptr) 
            return true;
        if(root->left && root->right == nullptr)
            return isCompletedTree(root->left);
        if(root->left == nullptr && root->right)
            return false;
        return isCompletedTree(root->left) && isCompletedTree(root->right);
    }
    
    bool isSearchTree(TreeNode *root, int left, int right)
    {
        if(root == nullptr) 
            return true;
        if(root->val < left || root->val > right)
            return false;
        return isSearchTree(root->left,left,root->val) && isSearchTree(root->right, root->val,right);
    }
        
};

全部评论
这样判断完全二叉树是错的 这个样例就错了{6,4,8,3,#,7},但是提交是正确了,说明测试数据弱了
1 回复 分享
发布于 2021-03-21 11:11
判断是否完全二叉树是怎么判断的呀,没看明白
点赞 回复 分享
发布于 2021-03-14 09:07
这方法判断搜索二叉树要是出现左子树中的右子树节点是大于最初根节点的情况,也会认为是搜索二叉树,实际上应该不算才对
点赞 回复 分享
发布于 2021-03-26 22:57
确实写错了
点赞 回复 分享
发布于 2021-04-22 20:40
确实写错了啊
点赞 回复 分享
发布于 2021-05-31 00:06

相关推荐

找不到工作死了算了:没事的,雨英,hr肯主动告知结果已经超越大部分hr了
点赞 评论 收藏
分享
评论
5
收藏
分享
牛客网
牛客企业服务