zoukankan      html  css  js  c++  java
  • 二叉树高度计算,判定是否为平衡二叉树

    二叉树节点:

    struct TreeNode {
        int val;
        TreeNode *left;
        TreeNode *right;
        TreeNode() : val(0), left(nullptr), right(nullptr) {}
        TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
        TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
     };

    计算二叉树高度

     int treeHeight(TreeNode *node)
        {
            if(node == nullptr)
                return 0;
            int left = treeHeight(node->left);
            //cout << "left:" << left << endl;
            int right = treeHeight(node->right);
            //cout << "right" << right << endl;
            return max(left, right) + 1;
        }

    判断是否为平衡二叉树(左右子树高度差小于等于1)

      // 判定左右子树是否是平衡的 -1不平衡
        int balance(TreeNode * node)
        {
            if(node == nullptr)
                return 0;
            int left = balance(node->left);
            if(left == -1)
                return -1;
            int right = balance(node->right);
            if(right == -1)
                return -1;
            return abs(left - right) > 1 ? -1 : 1+max(left, right); 
        }
  • 相关阅读:
    Omi框架学习之旅
    Omi框架学习之旅
    Omi框架学习之旅
    加密解密
    RSA加密解密
    CMDB后台管理(AutoServer)
    CMDB Autoclient思路分析
    CMDB开发(需求分析)
    Django之model操作(续)
    Django之Model操作
  • 原文地址:https://www.cnblogs.com/didiaoxiaoguai/p/13887076.html
Copyright © 2011-2022 走看看