zoukankan      html  css  js  c++  java
  • 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();
        }
    };
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
  • 相关阅读:
    c# cover他和parse区别
    函数指针的两种调用形式(转)
    -1的 补码
    xp 关 beep提示音
    case 内定义的变量 “crosses initialization” 交叉初始化错误
    WEBSTORM 打开多个项目的方法
    linux--用户管理--useradd
    委托
    C#多态学习总结
    SQL实现group by 分组后组内排序
  • 原文地址:https://www.cnblogs.com/lyr-2000/p/14322333.html
Copyright © 2011-2022 走看看