zoukankan      html  css  js  c++  java
  • careercup-树与图 4.1

    4.1 实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个结点,其两颗子树的高度差不超过1.

    C++实现代码:

    #include<iostream>
    #include<new>
    #include<cmath>
    using namespace std;
    
    //Definition for binary tree
    struct TreeNode
    {
        int val;
        TreeNode *left;
        TreeNode *right;
        TreeNode(int x) : val(x), left(NULL), right(NULL) {}
    };
    
    void createTree(TreeNode *&root)
    {
        int i;
        cin>>i;
        if(i!=0)
        {
            TreeNode *tmp=new TreeNode(i);
            root=tmp;
            createTree(root->left);
            createTree(root->right);
        }
    }
    
    int high(TreeNode *root)
    {
        if(root==NULL)
            return 0;
        if(root->left==NULL&&root->right)
            return 1;
        int lhigh=high(root->left);
        int rhigh=high(root->right);
        return (lhigh>=rhigh)?lhigh+1:rhigh+1;
    }
    
    bool isAVL(TreeNode *root)
    {
        if(root==NULL)
            return true;
        if(root->left==NULL&&root->right==NULL)
            return true;
        int lhigh=high(root->left);
        int rhigh=high(root->right);
        if(abs(lhigh-rhigh)<2)
            return isAVL(root->left)&&isAVL(root->right);
        return false;
    }
    
    int main()
    {
        TreeNode *root=NULL;
        createTree(root);
        cout<<high(root)<<endl;
        cout<<isAVL(root)<<endl;
    }
  • 相关阅读:
    [HNOI2010]CITY 城市建设

    [HNOI2011]数学作业
    [NOI2012]美食节
    [HEOI2014]大工程
    [HEOI2013]ALO(待更)
    [HEOI2016/TJOI2016]序列
    贪食蛇(未完待续)
    [HEOI2016/TJOI2016]字符串
    bzoj 2437[Noi2011]兔兔与蛋蛋 黑白染色二分图+博弈+匈牙利新姿势
  • 原文地址:https://www.cnblogs.com/wuchanming/p/4147527.html
Copyright © 2011-2022 走看看