• BST 树和满二叉树的性质


    题目描述
    给定一棵二叉树,已经其中没有重复值的节点,请判断该二叉树是否为搜索二叉树和完全二叉树。
    示例1
    输入
    复制
    {2,1,3}
    返回值
    复制
    [true,true]

    算法

    1. 判断中序是否是严格升序,如果是,说明是BST
    2. 满二叉树,最后一层 最左边,一定是非空节点,也就是 空节点不能在非空节点前面
    
    
    /**
     * 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
    //         vector<int>x;
            preNode = NULL;
            bool f = isBST(root);
            bool a = isComplete(root);
            return {f,a};
        }
        TreeNode* preNode;
        bool isBST(TreeNode*root) {
            if(root) {
                if(!isBST(root->left)) return false;
                if(preNode && preNode->val >= root->val) return false;
                preNode = root;
                return isBST(root->right);
                
            }
            return true;
        }
        bool isComplete(TreeNode* root) {
            queue<TreeNode*> q;
            q.push(root);
            while (q.front()) {
                TreeNode* x = q.front();q.pop();
               
                q.push(x->left);
                q.push(x->right);
                
            }
            while(q.size() && q.front()==NULL) q.pop();
            return q.empty();
        }
    };
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
  • 相关阅读:
    不装JDK环境运行项目jar包
    java 开发事务回滚
    navicat无法连接MySql; client does not support authentication....
    java url特殊字符报400
    修复windows **.dll缺失
    mysql5.7解压版安装
    IDEA破解
    java 通过request.getParameterMap()获取前台传入参数
    java 实现https请求
    java 实现Http请求
  • 原文地址:https://www.cnblogs.com/lyr-2000/p/14322333.html
Copyright © 2020-2023  润新知