zoukankan      html  css  js  c++  java
  • 剑指Offer-38.平衡二叉树(C++/Java)

    题目:

    输入一棵二叉树,判断该二叉树是否是平衡二叉树。

    分析:

    可以从根节点开始遍历每一个节点,求得节点左右子树的最大高度,判断是不是平衡二叉树。这样做的问题在于会重复遍历节点,造成不必要的浪费。

    所以可以采用后续遍历来求解此题,判断子树是否是平衡二叉树,如果是,就返回子树的最大高度,不是的话,就中止遍历,这样做的话每个节点只访问一遍。

    程序:

    C++

    class Solution {
    public:
        bool IsBalanced_Solution(TreeNode* pRoot) {
            if(getHeight(pRoot) == -1)
                return false;
            return true;
        }
        int getHeight(TreeNode* root){
            if(root == nullptr)
                return 0;
            int leftHeight = getHeight(root->left);
            if(leftHeight == -1)
                return -1;
            int rightHeight = getHeight(root->right);
            if(rightHeight == -1)
                return -1;
            return abs(leftHeight - rightHeight) <= 1 ? 1 + max(leftHeight, rightHeight): -1;  
        }
    };

    Java

    public class Solution {
        public boolean IsBalanced_Solution(TreeNode root) {
            if(getHeight(root) == -1)
                return false;
            return true;
        }
        public int getHeight(TreeNode root){
            if(root == null)
                return 0;
            int leftHeight = getHeight(root->left);
            if(leftHeight == -1)
                return -1;
            int rightHeight = getHeight(root->right);
            if(rightHeight == -1)
                return -1;
            return Math.abs(leftHeight - rightHeight) <= 1 ? 1 + Math.max(leftHeight, rightHeight): -1;  
        }
    }
  • 相关阅读:
    day1记一次无列名注入
    无参数RCE
    ThinkPHP 5.x远程命令执行漏洞
    phpmyadmin4.8.1文件包含漏洞
    foreach循环导致变量覆盖
    绕过空格的报错注入
    布尔盲注payload补充
    php后台验证两种方式绕过
    CentOS yum 配置阿里镜像
    CentOS通过yum安装配置Java环境
  • 原文地址:https://www.cnblogs.com/silentteller/p/12051453.html
Copyright © 2011-2022 走看看