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);
    }
    

       

  • 相关阅读:
    Node.js 安装配置
    ITerm2配置-让你的mac命令行更加丰富高效
    ECharts 图表工具
    Vue 安装
    element-ui 安装
    mysql高级查询
    数据库第三章 参考
    DML和DQL 总结
    数据库第二章 参考答案
    数据库编程技术 第一章
  • 原文地址:https://www.cnblogs.com/buaaZhhx/p/12097766.html
Copyright © 2011-2022 走看看