zoukankan      html  css  js  c++  java
  • 剑指offer-面试题55-平衡二叉树-递归

    /*
    题目:
    	判断二叉树是否为平衡二叉树。
    */
    /*
    思路:
    	判断二叉树的左子树和右子树高度相差是否为1.
    */
    #include<iostream>
    #include<cstring>
    #include<vector>
    #include<algorithm>
    #include<map>
    
    using namespace std;
    
    struct TreeNode {
        int val;
        struct TreeNode *left;
        struct TreeNode *right;
        TreeNode(int x) :
                val(x), left(NULL), right(NULL) {
        }
    };
    
    bool isBalanced(TreeNode* pRoot,int &depth){
        if(pRoot == nullptr){
            return true;
        }
        int leftDepth = 0;
        int rightDepth = 0;
    
    	//若左右子树都平衡
        if(isBalanced(pRoot->left,leftDepth) && isBalanced(pRoot->right,rightDepth)){
            int diff = leftDepth - rightDepth;
            if(diff <= 1 && diff >= -1){
                depth = max(leftDepth,rightDepth) + 1;
                return true;
            }
        }
        return false;
    
    }
    
    bool isBalanced(TreeNode* pRoot){
        int depth = 0;
        return isBalanced(pRoot,depth);
    }
    
    int main(){
        TreeNode* node = new TreeNode(1);
        TreeNode* node1 = new TreeNode(2);
        TreeNode* node2 = new TreeNode(3);
        TreeNode* node3 = new TreeNode(4);
        TreeNode* node4 = new TreeNode(5);
        TreeNode* node5 = new TreeNode(6);
        TreeNode* node6 = new TreeNode(7);
        node->left = node1;
        node->right = node2;
        node1->left = node3;
        node1->right = node4;
        node2->right = node5;
        node4->left = node6;
        cout<<isBalanced(node);
    }
    

       

  • 相关阅读:
    JDBC事务
    JDBC连接池和DBUtils
    原生JDBC
    基本的查询语句
    多表查询
    mysql单表
    基础加强_XML
    基础加强_注解_类加载器_动态代理
    页面加载loading动画
    移动端手动控制页面高度
  • 原文地址:https://www.cnblogs.com/buaaZhhx/p/12097766.html
Copyright © 2011-2022 走看看